可能重复:
我们在php中使用对象运算符" - >"
在PHP 5中,打字的优点$class::method()是$class->method()什么?
与任何性能或功能差异一样.或者这只是一种强制代码非PHP4友好的方式,因为完全重写?
dre*_*010 10
在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
Run Code Online (Sandbox Code Playgroud)