Конструкторы PHP ArrayIterator
и ArrayObject
имеют параметр flags
, который задокументирован в ArrayObject::setFlags()
следующим образом:
ArrayObject::STD_PROP_LIST
Свойства объекта имеют свою обычную функциональность при доступе в виде списка (var_dump, foreach и т. д.).
ArrayObject::ARRAY_AS_PROPS
Записи могут быть доступны как свойства (чтение и запись).
Документация ArrayIterator::setFlags() аналогична (разница ошибочна).
Теперь я хорошо понимаю второй флаг, он разрешает доступ к свойствам с помощью ->
, а также доступ к массиву с помощью []
:
$a = new ArrayIterator(array('foo'=>1), ArrayObject::ARRAY_AS_PROPS);
var_dump($a['foo']);
var_dump($a->foo);
int(1)
int(1)
Но я не могу уложиться в голове ArrayObject::STD_PROP_LIST
. Насколько я проверял, var_dump
и foreach
ведут себя одинаково с этим флагом или без него. Что мне здесь не хватает?