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