我有一個對象通過包含從url讀取的參數的工廠構建。我應該總是驗證對象是否爲NULL?
從這個對象,我可以得到語言參數
$語言= $ my_parameters->使用getLanguage();
如果未設置語言,$ language爲NULL。
$ language也可能無效($ language-> isValid()返回false)。
所以,要建立我的頁面,我需要一些參數。
該頁面也建在槽工廠。然後我知道我需要建立它的參數。如果它錯過了參數,我會根據所要求的頁面建立一個有效的默認值。
此時,進入頁面工廠,如果一個參數無效,我會拋出異常。
我的頁面對象包含一個需要語言參數的正文對象。我知道我的參數在構建身體對象時是有效的。
進入我的身體的對象,我檢索語言
$語言= $ my_parameters->使用getLanguage();
此時,$ language **必須**纔有效。 所以我再次驗證
$language = $my_parameters->getLanguage();
if(is_null($language) or !$language->isValid()) {
throw new Exception('Language must be valid.');
}
如果我需要4個參數,我有4個 IFS是驗證如果對象不爲NULL,而不是無效的。
我這樣做是因爲方法是公開的其中在正文對象中使用$ language。
而且人體可能會在工廠外建造。誰知道......
是否正確在這種情況下,以驗證?
什麼有關最佳做法?
不錯的鏈接!我將它添加到我的提要閱讀器。坦克! – 2009-02-12 03:33:40
我很喜歡這個網站。現在我實際上沒有做好測試(還)。但我渴望它。 :-) – pc1oad1etter 2009-02-12 03:41:03