這篇文章主要介紹了PHP方法參數(shù)類型約束是什么,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站建設、成都做網(wǎng)站與策劃設計,五原網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設10多年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:五原等地區(qū)。五原做網(wǎng)站價格咨詢:13518219792
在之前的文章PHP方法參數(shù)的那點事兒中,我們講過關(guān)于PHP方法參數(shù)的一些小技巧。今天,我們帶來的是更加深入的研究一下PHP中方法的參數(shù)類型。
在PHP5之后,PHP正式引入了方法參數(shù)類型約束。也就是如果指定了方法參數(shù)的類型,那么傳不同類型的參數(shù)將會導致錯誤。在PHP手冊中,方法的類型約束僅限于類、接口、數(shù)組或者callable回調(diào)函數(shù)。如果指定了默認值為NULL,那么我們也可以傳遞NULL作為參數(shù)。
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,
在這個例子中,我們定義了參數(shù)類型為A類,所以當我們傳遞一個標量類型時,直接就會返回錯誤信息。
function testB(int $a){ var_dump($a); } testB(1); testB('52aadfdf'); // 字符串強轉(zhuǎn)為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); // 數(shù)字會強轉(zhuǎn)為字符串 // testC(new A()); // Fatal error: Uncaught TypeError: Argument 1 passed to testC() must be of the type string
在手冊中明確說明了標量類型是不能使用類型約束的。但其實是可以使用的,不過如果都是標量類型則會進行相互的強制轉(zhuǎn)換,并不能起到很好的約束作用。比如上例中int和string類型進行了相互強制轉(zhuǎn)換。指定了非標量類型,則會報錯。此處是本文的重點,小伙伴們可要劃個線了哦。其實說白了,如果我們想指定參數(shù)的類型為固定的標量類型的話,在參數(shù)中指定并不是一個好的選擇,最好還是在方法中進行再次的類型判斷。而且如果參數(shù)中進行了強轉(zhuǎn),也會導致方法內(nèi)部的判斷產(chǎn)生偏差。
最后我們再看一看接口和匿名方法的類型約束。匿名參數(shù)類型在Laravel等框架中非常常見。
// 接口類型 interface D{} class childD implements D{} function testD(D $d){ var_dump($d); } testD(new childD()); // 回調(diào)匿名函數(shù)類型 function testE(Callable $e, string $data){ $e($data); } testE(function($data){ var_dump($data); }, '回調(diào)函數(shù)');
感謝你能夠認真閱讀完這篇文章,希望小編分享的“PHP方法參數(shù)類型約束是什么”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學習!
分享標題:PHP方法參數(shù)類型約束是什么
文章位置:http://chinadenli.net/article48/gpgehp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、移動網(wǎng)站建設、營銷型網(wǎng)站建設、全網(wǎng)營銷推廣、定制開發(fā)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)