站長資訊網
        最全最豐富的資訊網站

        期待已久的PHP方法參數類型約束它來咯

        本篇文章給大家介紹一下PHP的方法參數類型約束。有一定的參考價值,有需要的朋友可以參考一下,希望對大家有所幫助。

        期待已久的PHP方法參數類型約束它來咯

        關于PHP的方法參數類型約束

        在之前的文章PHP方法參數的那點事兒中,我們講過關于PHP方法參數的一些小技巧。今天,我們帶來的是更加深入的研究一下PHP中方法的參數類型。

        在PHP5之后,PHP正式引入了方法參數類型約束。也就是如果指定了方法參數的類型,那么傳不同類型的參數將會導致錯誤。在PHP手冊中,方法的類型約束僅限于類、接口、數組或者callable回調函數。如果指定了默認值為NULL,那么我們也可以傳遞NULL作為參數。

        class A{} function testA(A $a){     var_dump($a); }  testA(new A()); // testA(1);  // Fatal error: Uncaught TypeError: Argument 1 passed to testA() must be an instance of A, int given,

        在這個例子中,我們定義了參數類型為A類,所以當我們傳遞一個標量類型時,直接就會返回錯誤信息。

        function testB(int $a){     var_dump($a); } testB(1); testB('52aadfdf'); // 字符串強轉為int了 // testB('a'); // Fatal error: Uncaught TypeError: Argument 1 passed to testB() must be of the type int, string given  function testC(string $a){     var_dump($a); } testC('測試'); testC(1);  // 數字會強轉為字符串 // testC(new A());  // Fatal error: Uncaught TypeError: Argument 1 passed to testC() must be of the type string

        在手冊中明確說明了標量類型是不能使用類型約束的。但其實是可以使用的,不過如果都是標量類型則會進行相互的強制轉換,并不能起到很好的約束作用。比如上例中int和string類型進行了相互強制轉換。指定了非標量類型,則會報錯。此處是本文的重點,小伙伴們可要劃個線了哦。其實說白了,如果我們想指定參數的類型為固定的標量類型的話,在參數中指定并不是一個好的選擇,最好還是在方法中進行再次的類型判斷。而且如果參數中進行了強轉,也會導致方法內部的判斷產生偏差。

        最后我們再看一看接口和匿名方法的類型約束。匿名參數類型在Laravel等框架中非常常見。

        // 接口類型 interface D{} class childD implements D{} function testD(D $d){     var_dump($d); } testD(new childD());  // 回調匿名函數類型 function testE(Callable $e, string $data){     $e($data); } testE(function($data){     var_dump($data); }, '回調函數');

        測試代碼:

        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

        推薦學習:php視頻教程

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 综合精品欧美日韩国产在线| 国产精品精品自在线拍| 无码国产精品一区二区免费模式| 久久91精品国产91久久户| 亚洲国产成人精品无码区在线观看| 国产99久久九九精品无码| 97国产精品视频| 久久狠狠高潮亚洲精品| 香蕉国产精品麻豆亚洲欧美日韩精品自拍欧美v国 | 亚洲国产精品ⅴa在线观看| 911亚洲精品国内自产| 99精品国产在热久久无毒不卡| 中文字幕久精品免费视频| 免费视频精品一区二区| 国产精品JIZZ在线观看老狼| 国产原创精品视频| 国产成人精品一区二区三区免费| 最新精品国偷自产在线| 人人妻人人澡人人爽精品欧美 | 日韩麻豆国产精品欧美| 国产精品黄网站| 国产精品麻豆高清在线观看| 国产精品无码一区二区三区电影| 无码精品黑人一区二区三区| 亚洲国产精品尤物yw在线| 日韩精品一区二区三区视频 | 久久精品国产亚洲欧美| 国产精品日本一区二区不卡视频| 亚洲第一极品精品无码久久| 亚洲精品制服丝袜四区| 亚洲欧洲美洲无码精品VA| 伊人久久精品无码av一区| 亚洲精品乱码久久久久久久久久久久 | 国产精品一区在线观看你懂的| 99久久99久久精品国产| 国产vA免费精品高清在线观看| 国产成人精品高清不卡在线| 国产精品爱搞视频网站 | 国产精品欧美一区二区三区不卡| av国内精品久久久久影院| 2020国产精品|