2015-05-18 41 views
1

如果我有一個類Foo和功能bar當在PHP中鍵入一個類時,是否需要包含類文件?

function bar (Foo $x) { baz($x); } 

使用Foo作爲一種提示...我需要包括在內,以含有Foo對於上述編譯的文件嗎?

在使用PHP 5.4.33進行測試時,即使在調用函數時也不需要包括該類。該函數失敗,因爲提供的$x不是類型Foo,但沒有發生錯誤,如「錯誤:Foo未定義」。

這種行爲是否可靠?它記錄在任何地方嗎?

作爲一個方面說明,我知道這可能是很好的文檔,包括Foo.php文件時,我使用Foo作爲一種提示,但是它確實防止require_once打電話,如果我沒有包括它。

+0

這就是爲什麼很多人使用自動加載機 –

回答

1

這不是一個權威的迴應。

我可以想象,PHP對象內部有一個存儲類名稱的字段。這可以用於參數檢查。

的情況下物體Foo有效實例(您想使用它),你將需要已經的Foo定義否則你不能讓一個實例。

因此,似乎參數檢查不需要Foo的定義。

4

所有PHP所做的是檢查名稱的類型。它沒有將它與任何具體的實現聯繫起來。因此,不需要以任何方式獲得該類型的具體實施;這意味着您不需要include定義類型的文件。

+0

[快速和骯髒的測試](http://3v4l.org/LCaZ5) –

相關問題