2012-05-02 65 views
5

有沒有辦法要求函數參數是一個特定的數據類型,如數組?比如這樣的事情:PHP。有沒有辦法要求函數參數是一個數組?

function example(array $array){} 

如果對所有的數據類型都這樣做了嗎?有沒有一個很好的資源可以告訴我如何做到這一點?

+5

不是所有,但對於數組和類型(類/接口) 。您可以在手冊中找到相關記錄。請先做功課,並在那裏看看,它會更詳細地回答你的問題。 – hakre

+0

http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/#functions – maialithar

回答

3

編輯:是的,你可以輸入,提示使用數組,所以編輯我的答案,並相應地改變。

你想要做的就是type-hinting。您無法鍵入提示基本數據類型,例如int,string,bool。你可以用array或對象和接口的類型提示:

function example_hinted1(array $arr) { 

} 

function example_hinted2(User $user) { 

} 

調用example_hinted1(5)將產生一個PHP致命錯誤(也不例外),但稱它傳遞一個數組是完全確定。

如果您需要,以確保某些參數的功能是從一個基本的類型,你可以用代碼模擬你的函數內部此行爲:

function example($number) { 
    if (!is_int($number) { 
    throw new Exception("You must pass an integer to ".__FUNCTION__."()"); 
    } 
    // rest of your function 
} 

那麼,這些段將工作:

example(1); 

$b = 5 + 8; 
example($b); 

,而這些會拋出異常:

example('foo'); 
example(array(5, 6)); 
example(new User()); 
+0

感謝您的解釋良好的答案,它幫助了很多。 –

相關問題