是否可以在 PHP 中重载运算符?

2022-08-30 08:55:51

具体来说,我想创建一个 Array 类,并希望重载 [] 运算符。


答案 1

如果您使用的是 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;

答案 2

实际上,最佳解决方案是实现ArrayAccess接口的四种方法:http://php.net/manual/en/class.arrayaccess.php

如果你还想在“foreach”的上下文中使用你的对象,你必须实现“迭代器”接口:http://www.php.net/manual/en/class.iterator.php


推荐