PHP是一款強(qiáng)大的語言,廣泛應(yīng)用于萬維網(wǎng)上的各種應(yīng)用程序開發(fā),近些年來,PHP在追求更嚴(yán)格和更規(guī)范的編程體驗(yàn),特別是在類型檢查方面,提出了stricttypes這個(gè)特征標(biāo)志。
在很長(zhǎng)一段時(shí)間的編程過程中,PHP一直都是弱類型語言的代表,變量并沒有被賦予特定的數(shù)據(jù)類型,因此,很容易出現(xiàn)類型不匹配的情況,這種情況會(huì)導(dǎo)致整個(gè)程序的功能性甚至穩(wěn)定性出現(xiàn)損害。而在PHP5.0版本的時(shí)候,就開始支持?jǐn)?shù)據(jù)類型的聲明,這里還需要說明的是,從PHP7.0版本開始,stricttypes標(biāo)志不僅默認(rèn)關(guān)閉,而且限制性更高,因此,需要開啟才能使用。
代碼開啟stricttypes模式:declare(strict_types=1); function sum(int $a, int $b) { return $a + $b; } echo sum('3', 5); // 拋出一個(gè)類型不匹配的致命錯(cuò)誤
在上述的代碼中,function中的在兩個(gè)參數(shù)上都添加了int數(shù)據(jù)類型標(biāo)注,而第二個(gè)參數(shù)中使用了一個(gè)字符串(3)來進(jìn)行變量賦值,并嘗試調(diào)用function,這種情況是不符合語言規(guī)范的,執(zhí)行結(jié)果將會(huì)拋出一個(gè)類型不匹配的致命錯(cuò)誤。
下面提供一些函數(shù)的標(biāo)簽類型及其描述:
- void:表示函數(shù)沒有返回值。
- bool:表示返回布爾值。
- int:表示返回整數(shù)值。
- float:表示返回浮點(diǎn)數(shù)值。
- string:表示返回字符串值。
- array:表示返回?cái)?shù)組值。
- callable:表示返回函數(shù)類型。
- iterable:表示返回可迭代對(duì)象。
需要注意的是,嚴(yán)格的類型檢查也可能使代碼變慢,因?yàn)樗鼤?huì)比寬松的類型檢查多做一些工作。當(dāng)然,這在處理一些性能關(guān)鍵的代碼時(shí)可能會(huì)有影響。
在結(jié)語前,需要一提的是,PHP的嚴(yán)格類型檢查仍在積極的開發(fā)之中,包括數(shù)據(jù)代碼的錯(cuò)誤以及編寫文檔。它可用于預(yù)期更嚴(yán)格的代碼、單元測(cè)試和其他開發(fā)類型。總之,在代碼的開發(fā)上,需要合理的判斷是否需要開啟。