> 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()
调用该类的公共标准方法。
上一篇: >method() or $class::method()
下一篇: PHP Unit Selenium Webdriver: How to send key by keystroke with sendKeys()