PHP のコンストラクターには、次のように文書化されArrayIterator
てArrayObject
いるflags
パラメーターがあります。ArrayObject::setFlags()
ArrayObject::STD_PROP_LIST
オブジェクトのプロパティは、リスト (var_dump、foreach など) としてアクセスした場合、通常の機能を持ちます。
ArrayObject::ARRAY_AS_PROPS
エントリはプロパティとしてアクセスできます (読み取りおよび書き込み)。
ArrayIterator::setFlags() のドキュメントも同様です (違いは間違いです)。
これで、2 番目のフラグをよく理解できました。これにより、プロパティ アクセスと->
配列アクセスが可能になり[]
ます。
$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
ここで何が欠けていますか?