2
实现了ArrayAccess当你实现一个类的_toString方法的对象,您可以将对象转换字符串PHP转换阵列
$string =(string) $object
是否有在数组转换成等价
$array=(array) $object
从我测试过的代码中,即使此对象实现ArrayAccess,objet的属性也会转换为数组的索引。
我预计,铸造用数组访问的对象,我会获得thith相同值的数组我可以访问对象
public function MyObject implements ArrayAccess{
private $values;
public function __construct(array $values){
$this->values=$values;
}
public function offsetSet($name,$value){
$this->values[$name]=$value;
}
//etc...
}
$myObject=new MyObject(array('foo'=>'bar');
$asArray=(array)$myObject;
print_r($asArray);
// expect array('foo'=>'bar')
// but get array('MyObjectvalues'=>array('foo'=>'bar'));
我也请注意,本机ArrayObject的类有一个我所期望的行为
从ArrayObject派生并重用getArrayCopy;或者通过返回$ values prop重新实现它。由于没有'__toArray'处理,投射将不起作用。 – mario 2014-12-02 09:39:08
'公共函数MyObject实现ArrayAccess {'< - 这是无效的PHP语法。你想'class MyObject实现ArrayAccess {...'。 – faintsignal 2017-08-22 21:13:52