请查看以下代码。虽然我没有将测试方法定义为静态它可以通过 A::test() 访问。怎么可能呢?这是 PHP 中的错误吗?
class A {
public function test(){
echo __CLASS__;
}
}
A::test(); //Print 'A'
如果我尝试访问 test() 方法中的任何公共(public)成员,则会出现错误。见下文。
class A {
public $name = 'jimit';
public static function test(){
echo $this->name;
echo __CLASS__;
}
}
A::test(); //Error
请帮我澄清一下事情。
谢谢, 吉米特
最佳答案
这不是一个错误,而是 PHP4 对象模型实现的遗留问题。在当前版本中,静态调用非静态方法将引发 E_STRICT
级别警告。
至于第二个,很明显,没有您的类的实例,因此没有 $this
可供引用。
关于php - 为什么公共(public)函数可以通过静态调用来访问 - PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18400931/