是否有可能在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 ++的概念。 我不相信有可能超载运算符,如+, - ,[]等。
可能的解决方案
ArrayObject
对你来说太慢)。 上一篇: Is it possible to overload operators in PHP?
下一篇: How to add variation stock status to Woocommerce product variation dropdown