gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 23:27:57 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
where we use object operator “->” in php



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

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

最佳答案

在 PHP5 中,两者不可互换。

静态方法调用将比非静态调用执行得更快(经过多次迭代),但随后该方法在静态上下文中被调用,并且被调用方法没有可用的对象。

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

所以答案实际上是以它应该被调用的方式调用该方法。如果是 PHP 5 中的静态方法,则静态调用 Class::method() ,如果是公共(public)方法,则使用对象$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

关于php - $class->method() 或 $class::method(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com