關(guān)于PHP的方法參數(shù)類型約束在之前的文章PHP方法參數(shù)的那點事兒中,我們講過關(guān)于PHP方法參數(shù)的一些小技巧。今天,我們帶來的是更加深入的研究一下PHP中方法的參數(shù)類型。 在PHP5之后,PHP正式引入了方法參數(shù)類型約束。也就是如果指定了方法參數(shù)的類型,那么傳不同類型的參數(shù)將會導致錯誤。在PHP手冊中,方法的類型約束僅限于類、接口、數(shù)組或者callable回調(diào)函數(shù)。如果指定了默認值為NULL,那么我們也可以傳遞NULL作為參數(shù)。 class A{} 在這個例子中,我們定義了參數(shù)類型為A類,所以當我們傳遞一個標量類型時,直接就會返回錯誤信息。 function testB(int $a){ 在手冊中明確說明了標量類型是不能使用類型約束的。但其實是可以使用的,不過如果都是標量類型則會進行相互的強制轉(zhuǎn)換,并不能起到很好的約束作用。比如上例中int和string類型進行了相互強制轉(zhuǎn)換。指定了非標量類型,則會報錯。此處是本文的重點,小伙伴們可要劃個線了哦。其實說白了,如果我們想指定參數(shù)的類型為固定的標量類型的話,在參數(shù)中指定并不是一個好的選擇,最好還是在方法中進行再次的類型判斷。而且如果參數(shù)中進行了強轉(zhuǎn),也會導致方法內(nèi)部的判斷產(chǎn)生偏差。 最后我們再看一看接口和匿名方法的類型約束。匿名參數(shù)類型在Laravel等框架中非常常見。 // 接口類型 測試代碼:https://github.com/zhangyue0503/dev-blog/blob/master/php/202001/%E5%85%B3%E4%BA%8EPHP%E7%9A%84%E6%96%B9%E6%B3%95%E5%8F%82%E6%95%B0%E7%B1%BB%E5%9E%8B%E7%BA%A6%E6%9D%9F.md 參考文檔:https://www./manual/zh/language.oop5.typehinting.php |
|
來自: 硬核項目經(jīng)理 > 《待分類》