非静态方法如何在localhost上静态工作

时间:2019-05-30 10:03:36

标签: php oop

我创建了一个类,并在该类中创建了一个公共方法。现在将该方法称为静态方法,并且可以正常工作。怎么样?

如果我在PHP上上传此代码,则会产生我期望的错误。但是为什么它在本地主机上没有给出错误

 class A
    {
        public function b()
        {
            echo "i am b";
        }
    }
    print_r(A::b());

2 个答案:

答案 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