При реализации метода _toString на классе, вы можете преобразовать объект в строкуPHP Преобразование объекта, реализующий ArrayAccess в массиве
$string =(string) $object
Есть ли эквивалент для преобразования в массиве
$array=(array) $object
Из того, что я протестировал, с этим кодом атрибуты объекта преобразования преобразуются в индекс массива, даже если этот объект реализует ArrayAccess.
Я ожидал, что отливка объекта доступа к массиву, я бы получить массив 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
'public function MyObject реализует ArrayAccess {' <- это недопустимый синтаксис PHP. Вы хотите 'class MyObject реализует ArrayAccess {...'. – faintsignal