php 開發(fā)特點(diǎn)PHP8.0新特性1.聯(lián)合類型2.匹配php開發(fā)工程師
2022-09-12
"
本文主要內(nèi)容是解讀PHP的主要新特性8.0
"
PHP8 新特性
1. 聯(lián)合類型
2. 匹配表達(dá)式
3. 空安全運(yùn)算符
4. 構(gòu)造函數(shù)屬性提升
5. 注釋
6. 命名參數(shù)
前言
PHP8 于 2020 年 11 月 26 日正式發(fā)布,又一個(gè)里程碑已經(jīng)到來。
根據(jù)官網(wǎng)信息,已經(jīng)發(fā)布到8.0.2版本php 開發(fā)特點(diǎn),但是很多項(xiàng)目還在5.6版本,老的不會(huì)去新的,是時(shí)候升級(jí)了。!
接下來卡卡會(huì)分析PHP8.0的新特性。
一、小皮膚面板下載PHP8
由于您想學(xué)習(xí)新功能,因此您必須先下載它們。
卡卡一直使用本地環(huán)境,目前PHP版本只支持7.4,。
打開PHP官網(wǎng)地址,選擇下載。
下載方式
然后點(diǎn)擊圈出的下載
PHP源代碼下載
下載的源碼可以直接放在面板的這個(gè)目錄下
然后給文件夾起個(gè)名字,卡卡是按照目錄結(jié)構(gòu)寫的
PHP目錄結(jié)構(gòu)
然后跳轉(zhuǎn)到面板的PHP環(huán)境,設(shè)置為PHP8環(huán)境。
設(shè)置 PHP 環(huán)境
訪問它!
PHP8.0 環(huán)境配置
二、部分下載PHP8會(huì)出現(xiàn)502解決
如果你已經(jīng)下載了PHP8,按照卡卡流程,但是訪問時(shí)返回502。
那不用擔(dān)心,這只是一個(gè)小問題,如果你發(fā)現(xiàn) PHP 無法成功運(yùn)行。
使用cmd進(jìn)入PHP8目錄,執(zhí)行該命令。如果出現(xiàn)以下情況seo優(yōu)化,說明卡卡可以解決這個(gè)問題。如果沒有,百度將單獨(dú)使用!
我收到以下錯(cuò)誤,因?yàn)?.dll 與 PHP 版本不兼容
解決這個(gè)問題也很簡單??ㄒ呀?jīng)下載了軟件,點(diǎn)擊直接下載。
下載后直接打開安裝,然后重啟電腦,一切正常。
如果不使用卡卡提供的安裝包,也可以直接訪問官網(wǎng)下載。
進(jìn)入官網(wǎng)后,拉到最下面還有其他工具和框架,點(diǎn)擊卡卡選擇的下載。
下載軟件
三、功能介紹
在版本的更新迭代中會(huì)有新的特性出現(xiàn),一些舊的特性也會(huì)被丟棄。
接下來說說PHP8.0帶來了哪些新特性!
1. 聯(lián)合類型
關(guān)于類型的特性seo優(yōu)化,其實(shí)PHP7中實(shí)現(xiàn)的,只不過是注解的形式。
現(xiàn)在來看看兩者的區(qū)別。下圖來自PHP官網(wǎng)。
此圖來自PHP官網(wǎng)
PHP8中設(shè)置參數(shù)類型后,如果傳入類型與預(yù)設(shè)類型不匹配,直接報(bào)錯(cuò)
PHP8 聯(lián)合類型
錯(cuò)誤信息
但是 PHP7 不同。雖然類型是預(yù)設(shè)好的,但也可以通過傳入對(duì)應(yīng)的類型來執(zhí)行。
PHP7執(zhí)行結(jié)果
該功能可用于限制參數(shù)類型,更好地過濾參數(shù)。
2. 匹配表達(dá)式
該函數(shù)類似于 PHP7 語句。
1. 匹配單個(gè)值
相比隱藏
2. 匹配多個(gè)條件
3. 默認(rèn)
具有相同的屬性
4. 不設(shè)置默認(rèn)值會(huì)報(bào)錯(cuò)
如果不設(shè)置會(huì)報(bào)錯(cuò)
5. 強(qiáng)制類型匹配
默認(rèn)強(qiáng)制類型匹配,下面代碼匹配的是int的值,但是搜索的值是 3,所以直接去
3. 空安全運(yùn)算符
此功能將非常有效地解決代碼冗余問題。
PHP7中,有時(shí)會(huì)出現(xiàn)類屬性的多條件判斷,如下代碼
上面的代碼返回結(jié)果為
但是在PHP8中,這個(gè)代碼冗余問題得到了完美解決
PHP8 代碼
代碼
返回相同的結(jié)果
可以看出php 開發(fā)特點(diǎn),PHP7 用 PHP8 中的一行代碼就可以實(shí)現(xiàn)。很好嗎?
4. 構(gòu)造函數(shù)屬性提升
PHP7 構(gòu)造函數(shù)代碼
PHP8 構(gòu)造函數(shù)代碼
5. 注釋
新加入的注解功能,寫完這些功能,卡卡只覺得這個(gè)用處不大,估計(jì)是個(gè)很好的理由。
但是為了文章的完整性,還是寫出來給大家看看。
直接上代碼,PHP7獲取代碼的注釋用下面的代碼獲取。
上面的代碼中使用了幾個(gè)字符串操作。假設(shè)注釋不規(guī)范,出錯(cuò)的概率不小于你在代碼中寫的分號(hào)數(shù)量。
既然有這樣的問題,官方就為我們解決了這個(gè)問題。讓我們看看它是如何用 PHP8 編寫的。
關(guān)于類的注釋這里沒有提到。有興趣的可以去官網(wǎng)查看相關(guān)信息。
6. 命名參數(shù)
關(guān)于 PHP8 命名參數(shù)的最后一點(diǎn)說明
PHP7中使用了位置參數(shù),比如下面的代碼
也就是說,你傳入的參數(shù)對(duì)應(yīng)的是方法接收到的內(nèi)容。
那么PHP8中的一個(gè)新特性就是命名參數(shù),如下代碼
與上面代碼不同的是,每個(gè)參數(shù)在傳遞方法的時(shí)候都給了一個(gè)名字,但是這個(gè)名字只能是不帶$的參數(shù)。
這個(gè)新特性在代碼可維護(hù)性方面沒有任何優(yōu)勢,我們也不知道為什么要設(shè)計(jì)它!
但是在參數(shù)部分還有一個(gè)值得稱道的特性,就是可變參數(shù),類似于 Go 的
但是這里必須要注意的一點(diǎn)是,如果使用可變參數(shù),傳遞參數(shù)時(shí)不能使用位置參數(shù),而是必須使用所有命名參數(shù)。
四、總結(jié)