2012-07-07 117 views
0

我剛剛進入OOP與PHP和發現幾乎是偶然的,如果我把對象類型之前的名稱在函數定義中,我使用的IDE可以解析對象的成員函數和數據成員。指定函數參數的對象類型?

例如:

public function foo(car $car) { }

與之相對:

public function foo($car) { }

是合法的和優選的第一種方法?

感謝您幫助一個noob :-)

回答

3

肯定:Type Hinting。這就是PHP本身和IDE的一個特性,只是讓你更有用的代碼完成。試試看,並傳遞錯誤類型的對象。這將幫助您找到錯誤,這些錯誤是由傳遞給方法的錯誤類型導致的,早於此。

class A{} 
class B{} 
function foo(A $a) { echo "OK";} 
foo(new A); 
foo(new B); 

你也應該看看doccomments(對不起,沒有鏈接)。大多數IDE都可以讀取並使用它們以獲得更多的代碼補充建議。

/** 
* @return MyObject 
*/ 
function bar(){/* ..*/}; 
bar()->[Strg-Space] 
1

其實,最好的做法是提示interface,而不是一個特定的類名。這在面向對象的應用程序設計中可以回到Interface Segregation Principle

這意味着,當您注入一個對象時,您應該期望該對象具有特定的方法足跡,然後您可以調用它。那就是多態如何工作。