PHP中的類型提示(type hinting)功能介紹
概述
從PHP5開(kāi)始,我們可以使用類型提示來(lái)指定定義函數(shù)時(shí),函數(shù)接收的參數(shù)類型。如果在定義函數(shù)時(shí),指定了參數(shù)的類型,那么當(dāng)我們調(diào)用函數(shù)時(shí),如果實(shí)參的類型與指定的類型不符,那么PHP會(huì)產(chǎn)生一個(gè)致命級(jí)別的錯(cuò)誤(Catchable fatal error)。
類名稱和數(shù)組
在定義函數(shù)時(shí),PHP只支持兩種類型聲明:類名稱和數(shù)組。類名稱表名該參數(shù)接收的實(shí)參為對(duì)應(yīng)類實(shí)例化的對(duì)象,數(shù)組表明接收的實(shí)參為數(shù)組類型。下面是一個(gè)例子:
function demo(array $options){
var_dump($options);
}
在定義demo()函數(shù)的時(shí)候,指定了函數(shù)接收的參數(shù)類型為數(shù)組。如果我們調(diào)用函數(shù)時(shí),傳入的參數(shù)不是數(shù)組類型,例如像下面這樣的調(diào)用:
$options='options';
demo($options);
那么將產(chǎn)生以下錯(cuò)誤:
Catchable fatal error: Argument 1 passed to demo() must be of the type array, string given,
可以使用null作為默認(rèn)參數(shù)
注意
有一點(diǎn)需要特別注意的是,PHP只支持兩種類型的類型聲明,其他任何標(biāo)量類型的聲明都是不支持的,比如下下面的代碼都將產(chǎn)生錯(cuò)誤:
function demo(string $str){
}
$str="hello";
demo($str)
當(dāng)我們運(yùn)行上面的代碼時(shí),string會(huì)被當(dāng)做類名稱對(duì)待,因此會(huì)報(bào)下面的錯(cuò)誤:
Catchable fatal error: Argument 1 passed to demo() must be an instance of string, string given,
總結(jié)
類型聲明也是PHP面向?qū)ο蟮囊粋€(gè)進(jìn)步吧,尤其是在捕獲某種指定類型的異常時(shí)非常有用。
使用類型聲明,也可以增加代碼的可讀性。
但是,由于PHP是弱類型的語(yǔ)言,使用類型聲明又于PHP設(shè)計(jì)的初衷相悖。
到底使用還是不使用類型聲明,大家見(jiàn)仁見(jiàn)智吧,本菜鳥(niǎo)不:).
相關(guān)文章
php解析mht文件轉(zhuǎn)換成html的實(shí)例
下面小編就為大家?guī)?lái)一篇php解析mht文件轉(zhuǎn)換成html的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03
php獲取小程序碼的實(shí)現(xiàn)代碼(B類接口)
這篇文章主要介紹了php獲取小程序碼的實(shí)現(xiàn)代碼(B類接口),需要的朋友可以參考下2020-06-06
Zend Framework實(shí)現(xiàn)具有基本功能的留言本(附demo源碼下載)
這篇文章主要介紹了Zend Framework實(shí)現(xiàn)具有基本功能的留言本,結(jié)合實(shí)例形式較為詳細(xì)的分析了Zend Framework實(shí)現(xiàn)留言本的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-03-03
php中重定向網(wǎng)頁(yè)跳轉(zhuǎn)方法總結(jié)案例教程
這篇文章主要介紹了php中重定向網(wǎng)頁(yè)跳轉(zhuǎn)方法總結(jié)案例教程,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
Laravel中任務(wù)調(diào)度console使用方法小結(jié)
這篇文章主要給大家簡(jiǎn)單介紹了Laravel中任務(wù)調(diào)度console使用方法,并附上一個(gè)簡(jiǎn)單的示例,希望對(duì)大家學(xué)習(xí)使用console能夠有所幫助2017-05-05
PHP實(shí)現(xiàn)四種基礎(chǔ)排序算法的運(yùn)行時(shí)間比較(推薦)
本文給大家介紹PHP實(shí)現(xiàn)四種基礎(chǔ)排序算法的運(yùn)行時(shí)間比較,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧2016-08-08
首頁(yè)四格,首頁(yè)五格For6.0(GBK)(UTF-8)[12種組合][9-18][版主安裝測(cè)試通過(guò)]
首頁(yè)四格,首頁(yè)五格For6.0(GBK)(UTF-8)[12種組合][9-18][版主安裝測(cè)試通過(guò)]...2007-09-09
thinkPHP5框架整合plupload實(shí)現(xiàn)圖片批量上傳功能的方法
這篇文章主要介紹了thinkPHP5框架整合plupload實(shí)現(xiàn)圖片批量上傳功能的方法,結(jié)合實(shí)例形式分析了thinkPHP結(jié)合pluploadQueue實(shí)現(xiàn)上傳功能的相關(guān)操作技巧,需要的朋友可以參考下2017-11-11

