我创建了一个类,并在该类中创建了一个公共方法。现在将该方法称为静态方法,并且可以正常工作。怎么样?
如果我在PHP上上传此代码,则会产生我期望的错误。但是为什么它在本地主机上没有给出错误
class A
{
public function b()
{
echo "i am b";
}
}
print_r(A::b());
答案 0 :(得分:0)
从5.6版本的PHP开始对非静态方法is deprecated的静态调用。这意味着,如果您调用非静态方法(如static),则会得到E_DEPRECATED级别的错误。 如果没有看到此错误,则应重新配置error reporting并启用display errors。 例如:
ini_set('display_errors', 1);
error_reporting(E_ALL);
答案 1 :(得分:0)
这是为了与PHP4向后兼容,其中没有static
关键字。
现在,这是已弃用,但它没有错误-它只是显示警告:
Deprecated: Non-static method A::b() should not be called statically
您当然应该完全避免它!
您可以在这里看到它在不同版本中的工作方式,以及在PHP4中它完全没有抱怨的地方:https://3v4l.org/JmD1l