使PHP对象的行为类似于数组?

Mar*_*iek 22 php arrays oop

我希望能够编写一个行为类似于数组的PHP类,并使用常规数组语法进行获取和设置.

例如(其中Foo是我制作的PHP类):

$foo = new Foo();

$foo['fooKey'] = 'foo value';

echo $foo['fooKey'];
Run Code Online (Sandbox Code Playgroud)

我知道PHP有_get和_set魔术方法,但是那些不允许你使用数组表示法来访问项目.Python通过重载__getitem__和__setitem__来处理它.

有没有办法在PHP中执行此操作?如果它有所作为,我正在运行PHP 5.2.

Mat*_*ion 35

如果你扩展ArrayObject或实施,ArrayAccess那么你可以做你想要的.

  • 将ArrayObject转换为数组以将其与数组函数一起使用,例如array_values((array)$ some_array_object).这是一个烦人的额外步骤,但它的工作原理. (10认同)