PHP中的類型提示(type hinting)功能介紹
概述
從PHP5開始,我們可以使用類型提示來指定定義函數(shù)時,函數(shù)接收的參數(shù)類型。如果在定義函數(shù)時,指定了參數(shù)的類型,那么當我們調(diào)用函數(shù)時,如果實參的類型與指定的類型不符,那么PHP會產(chǎn)生一個致命級別的錯誤(Catchable fatal error)。
類名稱和數(shù)組
在定義函數(shù)時,PHP只支持兩種類型聲明:類名稱和數(shù)組。類名稱表名該參數(shù)接收的實參為對應(yīng)類實例化的對象,數(shù)組表明接收的實參為數(shù)組類型。下面是一個例子:
function demo(array $options){
var_dump($options);
}
在定義demo()函數(shù)的時候,指定了函數(shù)接收的參數(shù)類型為數(shù)組。如果我們調(diào)用函數(shù)時,傳入的參數(shù)不是數(shù)組類型,例如像下面這樣的調(diào)用:
$options='options';
demo($options);
那么將產(chǎn)生以下錯誤:
Catchable fatal error: Argument 1 passed to demo() must be of the type array, string given,
可以使用null作為默認參數(shù)
注意
有一點需要特別注意的是,PHP只支持兩種類型的類型聲明,其他任何標量類型的聲明都是不支持的,比如下下面的代碼都將產(chǎn)生錯誤:
function demo(string $str){
}
$str="hello";
demo($str)
當我們運行上面的代碼時,string會被當做類名稱對待,因此會報下面的錯誤:
Catchable fatal error: Argument 1 passed to demo() must be an instance of string, string given,
總結(jié)
類型聲明也是PHP面向?qū)ο蟮囊粋€進步吧,尤其是在捕獲某種指定類型的異常時非常有用。
使用類型聲明,也可以增加代碼的可讀性。
但是,由于PHP是弱類型的語言,使用類型聲明又于PHP設(shè)計的初衷相悖。
到底使用還是不使用類型聲明,大家見仁見智吧,本菜鳥不:).
相關(guān)文章
深入探討:Nginx 502 Bad Gateway錯誤的解決方法
本篇文章是對Nginx 502 Bad Gateway錯誤的解決方法進行了詳細的分析介紹,需要的朋友參考下2013-06-06詳解php中serialize()和unserialize()函數(shù)
這篇文章主要介紹了php的serialize()函數(shù)和unserialize()函數(shù)的相關(guān)資料,需要的朋友可以參考下2017-07-07Laravel 5框架學(xué)習(xí)之Eloquent (laravel 的ORM)
Laravel 的 Eloquent ORM 提供了漂亮、簡潔的 ActiveRecord 實現(xiàn)來和數(shù)據(jù)庫的互動。 每個數(shù)據(jù)庫表會和一個對應(yīng)的「模型」互動。在開始之前,記得把 config/database.php 里的數(shù)據(jù)庫連接配置好。2015-04-04利用 fsockopen() 函數(shù)開放端口掃描器的實例
下面小編就為大家?guī)硪黄?fsockopen() 函數(shù)開放端口掃描器的實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-08-08ThinkPHP框架使用redirect實現(xiàn)頁面重定向的方法實例分析
這篇文章主要介紹了ThinkPHP框架使用redirect實現(xiàn)頁面重定向的方法,結(jié)合實例形式分析了thinkPHP中redirect進行頁面重定向的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2018-04-04