【发布时间】:2016-04-24 14:20:17
【问题描述】:
php是否支持运算符重载?
我正在尝试创建一个接收日期的类,我想将它与另一个对象进行比较,而不必使用方法或属性。
这就是我想要做的:
$obj1 = new myClass('2016-08-15');
$obj2 = new myClass('2016-02-06');
if ($obj1 > $obj2){
...
}
我知道如何进行日期比较,我只需要知道如何重载运算符 >、
谢谢。
【问题讨论】:
php是否支持运算符重载?
我正在尝试创建一个接收日期的类,我想将它与另一个对象进行比较,而不必使用方法或属性。
这就是我想要做的:
$obj1 = new myClass('2016-08-15');
$obj2 = new myClass('2016-02-06');
if ($obj1 > $obj2){
...
}
我知道如何进行日期比较,我只需要知道如何重载运算符 >、
谢谢。
【问题讨论】:
【讨论】:
ArrayAccess接口overload the array subscript operator还是可以的。
PHP 对“重载”的解释不同于大多数面向对象的语言。重载传统上提供了拥有多个具有相同名称但参数数量和类型不同的方法的能力。
我希望这个链接能帮助你理解概念,
【讨论】:
您可以使用pecl-php-operator 来重载运算符。
git clone https://github.com/php/pecl-php-operator
cd pecl-php-operator
phpize
./confiure
make && make install
echo "extension=operator.so" > /etc/php/7.2/mods-available/operator.ini
ln -s /etc/php/7.2/mods-available/operator.ini /etc/php/7.2/cli/conf.d/20-operator.ini
ln -s /etc/php/7.2/mods-available/operator.ini /etc/php/7.2/fpm/conf.d/20-operator.ini
service php7.2-fpm reload
【讨论】: