這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)php7中類型約束的作用,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站長期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為大通企業(yè)提供專業(yè)的做網(wǎng)站、成都做網(wǎng)站,大通網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
在PHP7之前,函數(shù)和類方法不需要聲明變量類型,任何數(shù)據(jù)都可以被傳遞和返回,導(dǎo)致幾乎大部分的調(diào)用操作都要判斷返回的數(shù)據(jù)類型是否合格。
為了解決這個(gè)問題,PHP7引入了類型聲明。
目前有兩類變量可以聲明類型: 形參,返回值。
支持的類型有整形,浮點(diǎn)型,字符串型,布爾型。
如下代碼:
為了節(jié)省代碼篇幅,為就不寫OOP了,直接以函數(shù)為例。
此函數(shù)指定了參數(shù)類型為int, 而調(diào)用的時(shí)候傳入'ddd'字符串,因此此代碼運(yùn)行會(huì)產(chǎn)生Fatal error錯(cuò)誤。
而有些情況,PHP總是不那么認(rèn)真,如下:
指定參數(shù)類型為bool,但是傳入的字符串被轉(zhuǎn)化成了true,運(yùn)行后輸出的結(jié)果為:bool(true)
如要強(qiáng)制性約束類型,可在文件頭部添加declare聲明:
此時(shí)也會(huì)產(chǎn)生一個(gè)致命錯(cuò)誤,因?yàn)橹付ǖ膮?shù)類型為bool但是傳入的參數(shù)類型為string,只有把'ddd'換成true和false才可以,哪怕是1或0都不行。
接下來介紹一下返回類型聲明:
形參的括號后面加冒號加類型即可指定方法返回值的類型,指定了什么類型返回的就是什么類型。
同樣受declare影響,
如果不做類型強(qiáng)制約束,那么PHP會(huì)將返回的數(shù)據(jù)轉(zhuǎn)化為指定類型的數(shù)據(jù)再返回,目前差不多只有string無法強(qiáng)轉(zhuǎn)為int才會(huì)報(bào)錯(cuò)。
如果指定了強(qiáng)制約束,那么PHP將不會(huì)進(jìn)行類型轉(zhuǎn)換,而是進(jìn)行對比,如類型不同,則報(bào)錯(cuò)。
還有,返回值類型,也可指定對象名,則必須返回指定對象的實(shí)例,如:
name = $name; } static function instance(string $name) : person { return new self($name); } } person::instance('zhangsan');這是PHP7的新特性之一:類型聲明。
上述就是小編為大家分享的php7中類型約束的作用了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前題目:php7中類型約束的作用
網(wǎng)站鏈接:http://weahome.cn/article/jpjese.html