本篇文章給大家帶來的內容是關于PHP類型約束的詳細介紹(附代碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。
導語:所謂類型約束,即定義一個變量的時候,必須指定其類型,并且以后該變量也只能存儲該類型數據。PHP 雖然是弱類型語言,但是在 PHP 5 已經支持類型約束,包括對象、接口、數組,在 PHP 7 之后支持標量類型約束,下面簡單寫幾個示例。
標量類型、數組
在參數中指明類型,如果不一致,會拋出一個可捕獲的致命錯誤
?php * 數組類型約束 * @param array $arrfunction printArray(array $arr) echo implode( , , $arr);printArray(array(1, 2, 3));// 1,2,3printArray( 1 // Fatal error: Uncaught TypeError: Argument 1 passed to printArray() must be of the type array, string given, called in D:/WWW/test.php on line 13 and defined in D:/WWW/test.php:7 Stack trace: #0 D:/WWW/test.php(13): printArray( 1 ) #1 {main} thrown in D:/WWW/test.php on line 7
如上所示,標量類型也是如此
?php * 標量類型約束 * @param string $name * @param int $age * @param float $height * @param bool $isBoyfunction sayInfo(string $name, int $age, float $height, bool $isBoy) echo 姓名: . $name . ,年齡: . $age . ,身高: . $height . ,是否為男孩: . ($isBoy ? 是 : 否 sayInfo( tom , 12, 134.5, true);// 姓名:tom,年齡:12,身高:134.5,是否為男孩:是
對象、接口
類型約束也可以指定為對象或者接口。首先定義一個 Human 接口,Boy 和 Girl 兩個類分別實現接口
?php * 接口 * Interface Humaninterface Human html' target='_blank'>public function say(); public function run(); * 實現 Human 接口 * Class Boyclass Boy implements Human public function say() echo a boy say public function run() echo a boy run * 實現 Human 接口 * Class Girlclass Girl implements Human public function say() echo a girl say public function run() echo a girl run }
接下來新建一個類來測試
?phpinclude ./human.php class Action * Boy 對象類型約束 * @param Boy $boy public function boySay(Boy $boy) $boy- say(); * Girl 對象類型約束 * @param Girl $girl public function girlSay(Girl $girl) $girl- say(); * Human 接口類型約束 * @param Human $obj public function humanRun(Human $obj) $obj- run();$obj = new Action();$obj- boySay(new Boy());// a boy sayecho br / $obj- girlSay(new Girl());// a girl sayecho br / $obj- humanRun(new Boy());// a boy runecho br / $obj- humanRun(new Girl());// a girl run
當類型約束為具體對象 Boy 或者 Girl 時,只能傳入要求的對象。當類型約束為接口 Human 時,可以傳入實現接口的類 Boy 或 Girl。
【相關推薦:PHP視頻教程】
以上就是PHP類型約束的詳細介紹(附代碼)的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答