PHP:通过ClassName::method语法调用实例方法,会导致静态调用吗?

PHP:通过ClassName::method语法调用实例方法,会导致静态调用吗?,php,static-methods,Php,Static Methods,她是我的密码: class MyClass { public $prop; public function method () { echo $this->prop; } } 然后在代码的某个地方,意外地: MyClass::method(); 我希望上面这一行有一个解释错误,因为被调用的方法不是静态的。相反,调用了该方法,我收到了一个关于$prop not existing的异常。所以我知道该方法被称为静态方法,尽管它不是 这样行吗?为什么 由于遗

她是我的密码:

class MyClass 
{
   public $prop;
   public function method ()
   {
     echo $this->prop;
   }
}
然后在代码的某个地方,意外地:

MyClass::method();
我希望上面这一行有一个解释错误,因为被调用的方法不是静态的。相反,调用了该方法,我收到了一个关于$prop not existing的异常。所以我知道该方法被称为静态方法,尽管它不是


这样行吗?为什么

由于遗留原因,任何类方法都可以静态调用,即使它不是声明为静态的,因为您以前无法将它们声明为静态的。在这些情况下,$this将不引用任何内容,因为它不是对象上下文变量


在PHP5中,如果像刚才那样静态调用非静态方法,会得到一个E_严格警告。

由于遗留原因,任何类方法都可以静态调用,即使它不是声明为静态的,因为以前不能这样声明它们。在这些情况下,$this将不引用任何内容,因为它不是对象上下文变量

在PHP5中,如果像刚才那样静态调用非静态方法,会收到一个E_严格警告

静态调用非静态方法会生成E_严格级别警告

我想你有严格的警告。由于遗留原因,它可能会起作用,但不推荐使用

静态调用非静态方法会生成E_严格级别警告


我想你有严格的警告。它可能是由于旧的原因而起作用,但不推荐使用。

检查错误报告,它们可能只是隐藏的,请在主文件附近查找错误日志。检查错误报告,它们可能只是隐藏的,请在主文件附近查找错误日志。