php支持运算符重载吗?

时间:2016-04-24 14:20:17

标签: php operator-overloading

php是否支持运营商重载?

我正在尝试创建一个接受日期的类,我想将它与另一个对象进行比较,而不必使用方法或属性。

这就是我要做的事情:

$obj1 = new myClass('2016-08-15');
$obj2 = new myClass('2016-02-06');

if ($obj1 > $obj2){
    ...
}

我知道如何进行日期比较,我需要知道的是如何重载运算符>,<和==。

感谢。

3 个答案:

答案 0 :(得分:1)

PHP不支持运算符重载。

有一个古老的扩展允许以类似于python的方式执行此操作。你可以找到它here

话虽如此,现在最好的选择是使用常规方法进行比较。

答案 1 :(得分:0)

PHP对"重载"的解释与大多数面向对象的语言不同。传统上,重载提供了具有相同名称但不同数量和类型的参数的多个方法的能力。

我希望此链接可以帮助您理解概念,

http://php.net/manual/en/language.oop5.overloading.php

答案 2 :(得分:0)

您可以使用 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