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

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


如果您使用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'的上下文中使用你的对象,你必须实现'Iterator'接口:http://www.php.net/manual/en/class.iterator.php


PHP的重载和运算符概念(请参阅Overloading和数组运算符)不像C ++的概念。 我不相信有可能超载运算符,如+, - ,[]等。

可能的解决方案

  • 实现SPL ArrayObject(如cbeer所述)。
  • 实现Iterator(如果ArrayObject对你来说太慢)。
  • 使用PECL运算符扩展(如Benson所述)。
  • 链接地址: http://www.djcxy.com/p/69357.html

    上一篇: Is it possible to overload operators in PHP?

    下一篇: How to add variation stock status to Woocommerce product variation dropdown