PHP arrayObject, почему я не могу получить доступ к ключам массива, используя нотацию объекта?

Я пытаюсь получить доступ к ключам массива через нотацию объекта. Я думал, что код ниже должен работать?

<?php

  $accountData = array('role'=> 'user');
  $accountDataAO = new ArrayObject($accountData, ArrayObject::STD_PROP_LIST);
  echo $accountDataAO->role;
?>

Но я получаю это:

PHP Notice:  Undefined property: ArrayObject::$role in /home/stan/Desktop/test.php on line 5
PHP Stack trace:
PHP   1. {main}() /home/stan/Desktop/test.php:0

Что я делаю не так?


person Dannyboy    schedule 24.01.2014    source источник
comment
Из php.net This class allows objects to work as arrays. ==› не массивы как объекты. В любом случае, проверьте руководство php.net/manual/en/class.arrayobject.php   -  person AmazingDreams    schedule 24.01.2014
comment
ох нвм. Я понял. Пришлось добавить: ArrayObject::ARRAY_AS_PROPS   -  person Dannyboy    schedule 24.01.2014
comment
@Dannyboy обновите свой исходный вопрос, если кто-то еще ищет то же самое.   -  person Styphon    schedule 24.01.2014
comment
@Styphon, я добавил это как ответ.   -  person Dannyboy    schedule 24.01.2014
comment
Для дальнейшего использования это показано на ArrayObject::setFlags() странице руководства.   -  person salathe    schedule 24.01.2014


Ответы (1)


ах. нвм. Мне пришлось добавить: ArrayObject::ARRAY_AS_PROPS

<?php
  $accountData = array('role'=> 'user');
  $accountDataAO = new ArrayObject($accountData, ArrayObject::STD_PROP_LIST | ArrayObject::ARRAY_AS_PROPS); 
  echo $accountDataAO->role;
?>
person Dannyboy    schedule 24.01.2014