除此之外,如果您尝试在您的方法中使用$this,如下所示:
class t {
protected $a = 10;
public function tt() {
echo $this->a;
echo 1;
}
}
t::tt();
当静态调用非静态方法时,会发生致命错误:
Fatal error: Using $this when not in object context in ...\temp.php on line 11
即你的例子有点太简单,并不真正符合实际情况;-)
还要注意,你的例子应该给你一个严格的警告(quoting):
Calling non-static methods statically
generates an E_STRICT level warning.
实际上(至少用PHP 5.3):
Strict Standards: Non-static method t::tt() should not be called statically in ...\temp.php on line 12
1
所以:不是那么好;-)
静态地调用一个非静态方法并不像任何一种良好的做法(这可能是为什么它引发严格的警告),因为静态方法与非静态方法的含义不同:静态方法不引用任何对象,而非静态方法在调用的类的实例上工作.
再一次:即使PHP允许你做某事(也许由于历史原因 – 如与旧版本的兼容性),这并不意味着你应该这样做!