【问题标题】:Does php support operator overloading?php是否支持运算符重载?
【发布时间】:2016-04-24 14:20:17
【问题描述】:

php是否支持运算符重载?

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

这就是我想要做的:

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

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

我知道如何进行日期比较,我只需要知道如何重载运算符 >、

谢谢。

【问题讨论】:

    标签: php operator-overloading


    【解决方案1】:

    PHP 不支持运算符重载。

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

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

    【讨论】:

    【解决方案2】:

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

    我希望这个链接能帮助你理解概念,

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-04-25
        • 2012-02-11
        • 2011-09-06
        • 2014-07-31
        • 2019-10-22
        • 2011-08-27
        • 1970-01-01
        • 2022-06-29
        • 1970-01-01
        相关资源
        最近更新 更多