在PHP中編寫函數時,應該如何廣泛地檢查和驗證參數中的數據?PHP函數,檢查參數數據類型和有效值?
例如,如果我期望一個參數是一個布爾值,我應該這樣做嗎?
或者檢查參數類型是否爲布爾值,如果不返回FALSE?
我不特別喜歡從函數返回FALSE的想法,只是因爲參數無效,除非函數(urrg)的函數要驗證某些數據。因爲它可以掩蓋函數的實際結果,如果它設計爲無論如何返回TRUE/FALSE。
如果該函數生成的PHP錯誤是由於提供了無效數據而導致的,那麼對於開發人員來說,這種方式比返回FALSE或返回空字符串更有用。這樣他們知道他們的輸入數據(因此可能使用該函數)是無效的/不正確的,而不是函數內的測試返回FALSE而不是TRUE。
如果數據無效,我可以隨時檢查進入該功能的數據和trigger_error()
。但是在多大程度上這是必要的?
PHP本質上是鬆散類型的。你必須與系統作鬥爭來強制打字。也就是說,這也取決於數據來自何處。如果你正在製作某種Ajax API,你可能希望儘可能早地拋出一個有意義的異常,而不是等待某些東西在作品中更深入地打破,並返回一個深奧的錯誤。 –
如果你正在積極地對付弱打字,那麼你可能會用錯誤的語言開始。通常可以使用'assert()'裝飾,除非您的應用程序流和行爲不穩定,您可能會在部署後仍然收到無效類型。如果在開發過程中無法獲得它,請使用execeptions。 – mario
噢,絕對我知道PHP的鬆散類型的本質。事實上,這就是它使用這種簡單的語言的原因。但是我想知道是否應該在進入函數時測試參數的值和類型。目前,我傾向於僅僅依靠開發人員(我)明智地認識到,如果該功能出現錯誤,他們需要確保他們正確使用它。現在只有我使用這些功能,但如果有人想要使用它們呢? – batfastad