> method()或$ class :: method()

可能重复:
我们在php中使用对象运算符“ - >”

在PHP 5中,输入$class::method()而不是$class->method()会有什么好处?

如同任何表现或功能差异一样。 或者这只是一种强制代码非PHP4友好的方式,因为完全重写?


在PHP5中,两者不可互换。

静态方法调用的执行速度比非静态调用的速度快(在许多迭代中),但是在静态上下文中调用该方法,并且没有可用于被调用方法的对象。

PHP允许您使用静态表示法调用非静态方法的唯一原因是在PHP 4中向后兼容(因为PHP 4没有函数或public / protected / private的静态修饰符)。 如果您确实静态调用非静态方法,则会收到有关“严格标准”输出的警告,并且最终可能会失败并出现致命错误。

所以答案的确是按照它应该被调用的方式来调用这个方法。 如果它是PHP 5中的静态方法,那么静态调用Class::method() ,如果它是公共方法,则使用对象$class->method()调用它。

考虑这个代码(在PHP 5中运行):

class Foo {
    protected $bar = 'bar';

    function f() {
        echo $this->bar;
    }
}

echo Foo::f(); // Fatal error: Using $this when not in object context

$class::method()调用$class::method()的静态方法,而$class->method()调用该类的公共标准方法。

链接地址: http://www.djcxy.com/p/58141.html

上一篇: >method() or $class::method()

下一篇: PHP Unit Selenium Webdriver: How to send key by keystroke with sendKeys()