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_严格级别警告
我想你有严格的警告。它可能是由于旧的原因而起作用,但不推荐使用。检查错误报告,它们可能只是隐藏的,请在主文件附近查找错误日志。检查错误报告,它们可能只是隐藏的,请在主文件附近查找错误日志。