2013-11-21 36 views
2

我在PHP中已經注意到我可以創建一個沒有靜態修飾符的函數,但仍然把它稱爲靜態函數,只是好奇它爲什麼允許/什麼實際上正在發生。沒有靜態的PHP函數仍然可以像靜態一樣調用

class Foo { 
    public function bar($i) { 
     return $i + 1; 
    } 
} 

Foo::bar(4); // 5 

我期望static修飾符是必需的,如:

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

Foo::bar(4); // 5 

回答

5

它與PHP4的兼容性,其中所描述的行爲是如何實際工作(沒有static關鍵字)。

但是,您應該會收到E_STRICT錯誤,除非您的error_reporting設置爲不顯示E_STRICT

相關問題