请查看以下代码。虽然我没有将测试方法定义为静态,但可以通过A :: test()进行访问。怎么可能?这是PHP中的错误吗?
class A {
public function test(){
echo __CLASS__;
}
}
A::test(); //Print 'A'
如果我尝试访问test()方法中的任何公共成员,它会给我一个错误。见下文。
class A {
public $name = 'jimit';
public static function test(){
echo $this->name;
echo __CLASS__;
}
}
A::test(); //Error
请帮我澄清一下事情。
谢谢, Jimit
答案 0 :(得分:4)
这不是一个错误,而是PHP4对象模型实现的遗留问题。在当前版本中静态调用非静态方法将引发E_STRICT
级警告。
至于第二个很明显,你的班级没有实例,所以没有$this
可以引用。