有没有办法为您编写的类启用此语法:
$object= new my_array_like_class;
// some code that modifies the contents goes here
// now to access a value by index, I want to enable this array like syntax:
$value= $object[$index];
我知道这可以用于数组,但我想知道是否有任何方法可以使用自定义类型.
最佳答案 正如@zerkms指出的那样,任何实现
ArrayAccess
接口的类都可以实现.
最简单的方法是使用ArrayObject
类,它是PHP的原生类,并且已经实现了ArrayAccess接口,可以单独使用:
$object = new ArrayObject;
...
$value= $object[$index];
或延长:
class MyArrayLikeClass extends ArrayObject {
...
}
$object = new MyArrayLikeClass;
...
$value= $object[$index];
如果您因任何原因决定不使用ArrayObject并自行实现ArrayAccess,您可能也对IteratorAggregate
感兴趣,这是使对象可遍历的一种便捷方式(即可由foreach使用).