PHP静态调用方法;即使它没有被定义为静态

时间:2011-10-01 08:03:51

标签: php static-methods

这是如何工作的?不应该抛出错误,因为我试图静态调用非静态方法?基本上,我从来没有实例化某种类型的对象。

class Something {
   public function helloworld() {
       echo 'hello world';
   }
}

Something::helloworld();

2 个答案:

答案 0 :(得分:1)

将它放在脚本的顶部:

error_reporting( E_ALL | E_STRICT ); // E_STRICT is important here
ini_set( 'display_errors', true );

......然后看看会发生什么:

  

严格标准:非静态方法Something :: helloworld()不应该   在[...]

中静态调用

不可否认,它更多的是通知而不是错误。您的脚本将很乐意继续运行。

答案 1 :(得分:0)

如果您helloworld()使用$this,则只会给您一个错误。

这是一种PHP“WTF”,由于缺少规范,允许您静态调用未实际声明为static的函数。