是否有办法为您编写的类启用此语法:
$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];
我知道这可以用于数组,但我想知道是否有任何方法可以使用自定义类型。
答案 0 :(得分:2)
正如@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
使用)。