在PHP中,启用括号语法以在自定义类中按索引访问

时间:2014-07-16 00:21:48

标签: php

是否有办法为您编写的类启用此语法:

$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];

我知道这可以用于数组,但我想知道是否有任何方法可以使用自定义类型。

1 个答案:

答案 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使用)。