2

请查看以下代码。虽然我没有将测试方法定义为静态它可以通过 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

请帮我澄清一下。

谢谢,吉米特

4

1 回答 1

4

这不是一个错误,而是 PHP4 的对象模型实现的遗留物。在当前版本中,静态调用非静态方法将引发E_STRICT级别警告。

至于第二个,很明显,没有你的类的实例,所以没有$this参考。

于 2013-08-23T10:53:48.720 回答