是否可以在 PHP 中重载运算符?
2022-08-30 08:55:51
具体来说,我想创建一个 Array 类,并希望重载 [] 运算符。
如果您使用的是 PHP5(而且应该使用 PHP5),请查看 SPL ArrayObject 类。文档不是太好,但我认为如果你扩展ArrayObject,你就会得到你的“假”数组。
编辑:这是我的快速示例;恐怕我没有一个有价值的用例:
class a extends ArrayObject {
public function offsetSet($i, $v) {
echo 'appending ' . $v;
parent::offsetSet($i, $v);
}
}
$a = new a;
$a[] = 1;
实际上,最佳解决方案是实现ArrayAccess接口的四种方法:http://php.net/manual/en/class.arrayaccess.php
如果你还想在“foreach”的上下文中使用你的对象,你必须实现“迭代器”接口:http://www.php.net/manual/en/class.iterator.php