没有static的PHP函数仍然可以像static一样被调用


PHP function without static can still be called just like a static

我注意到,在PHP中,我可以创建一个不带静态修饰符的函数,但仍然可以像调用静态函数一样调用它,只是好奇为什么允许这样做/实际发生了什么。

class Foo {
   public function bar($i) {
       return $i + 1;
   }
}
Foo::bar(4); // 5

我希望静态修改器是必需的,比如:

class Foo {
   public static function bar($i) {
       return $i + 1;
   }
}
Foo::bar(4); // 5

这是为了与PHP4兼容,其中所描述的行为是它的实际工作方式(没有static关键字)。

不过,除非您的error_reporting设置为不显示E_STRICT,否则您应该得到一个E_STRICT错误。