2022年P(guān)HP的現(xiàn)狀以及最新版本帶來的特性
PHP作為Web界第一大語言近年來熱度不夠,但是這幾年的進(jìn)步和成長卻沒有中斷。在2022伊始,我們來一起學(xué)習(xí)一下目前PHP的現(xiàn)狀以及最新版本帶來的特性。

PHP 8.1
PHP最新的8.0版本于年前發(fā)布。 雖然重大變化不多,但是有很多小特性確實(shí)值得稱道。
枚舉類型
枚舉在PHP 8.1中內(nèi)置支持:
enum Status
{
case draft;
case published;
case archived;
public function color(): string
{
return match($this)
{
Status::draft => 'grey',
Status::published => 'green',
Status::archived => 'red',
};
}
}
構(gòu)造函數(shù)中的new
在 PHP 8.1 中,可以在初始化默認(rèn)形參的值、靜態(tài)變量、全局常量和特性實(shí)參時使用新的表達(dá)式。
class PostStateMachine
{
public function __construct(
private State $state = new Draft(),
) {
}
}
只讀屬性
只讀屬性為初始化(即向其賦值)后無法更改的屬性。
class CCData
{
public function __construct(
public readonly string $title,
public readonly PostState $state,
public readonly DateTimeImmutable $publishedAt,
) {}
}
與PHP 8.0 的promote相結(jié)合,可以用于構(gòu)造一個很干凈優(yōu)雅的數(shù)據(jù)類。對比PHP 5.6要實(shí)現(xiàn)上面同樣功能的相同類:
class CCData
{
private $title;
private $state;
private $publishedAt;
public function __construct(
$title,
$state,
$publishedAt = null
) {
$this->title = $title;
$this->state = $state;
$this->publishedAt = $publishedAt;
}
public function getTitle()
{
return $this->title;
}
public function getState()
{
return $this->state;
}
public function getPublishedAt()
{
return $this->publishedAt;
}
}
可以看到明顯的優(yōu)勢,有沒有?
PHP在每個版本中會帶來此類的這些很棒的語法小糖果改進(jìn)。隨著不斷迭代改進(jìn),相信PHP會變得越來越優(yōu)雅。
靜態(tài)分析
PHP中的靜態(tài)分析正在顯著改善:
諸如Laravel一樣的框架越來越多地采用靜態(tài)類型 (編寫代碼和文檔塊的唯一目的是幫助靜態(tài)分析);
PhpStorm 添加了對泛型支持,如果以編寫泛型代碼并讓IDE理解它,那將非常有意義;
PhpStan and psalm也在不斷完善。
異步PHP
異步社區(qū)中的一個令人興奮的發(fā)展是,來自Amp和ReactPHP(兩個主要的異步參與者)的開發(fā)人員齊心協(xié)力制作了一個號稱與光纖速率相兼容的事件循環(huán)實(shí)現(xiàn),稱為 Revolt PHP。
與整個社區(qū)相比,異步PHP僅被一小部分人使用; 但是,仍然可以看到異步社區(qū)正在變得強(qiáng)大并擁抱現(xiàn)代PHP。
無服務(wù)器 PHP
無服務(wù)器是現(xiàn)代開發(fā)的一個方向和確實(shí),PHP在該方面也沒有落后。Matthieu Napoli開發(fā)了一個無服務(wù)器框架Bref可以讓PHP開發(fā)人員了解這種相對較新的PHP使用方式,使無服務(wù)器 PHP 變得簡單。
PHP基金會
兩個月前,PHP世界傳來了一個相當(dāng)大的消息,甚至可能是2021年最大的消息:最活躍的核心維護(hù)者之一Nikita正在從事LLVM的工作,但同時也有一項(xiàng)新舉措得到了幾個人的支持大公司最終使核心發(fā)展可持續(xù)。
簡而言之,PHP基金會是一個非營利組織,其唯一目標(biāo)是資助PHP核心開發(fā)。該計劃由JetBrains推動,他們已經(jīng)向該項(xiàng)目承諾了100,000美元。目前已經(jīng)籌集了329,920.75 美元;
這筆錢將用于資助核心開發(fā),用于幫助PHP推廣,讓以前無法使用PHP的人們打開大門。
生態(tài)系統(tǒng)
提到PHP生態(tài)不得不說Packagist,現(xiàn)在有超過300萬個注冊版本和超300的包。其生態(tài)系統(tǒng)不斷發(fā)展壯大,2022 年也不例外。
另外,此前剛剛不久,Packagist 通過了處理超過500億次安裝的里程碑。

本文鏈接:http://jmtianhui.com/news/details-12-839.html
版權(quán)聲明:
1:本站所有內(nèi)容均由互聯(lián)網(wǎng)收集整理、上傳,并且以計算機(jī)技術(shù)研究交流為目的,僅供大家參考、學(xué)習(xí),不存在任何商業(yè)目的與商業(yè)用途,如描述有誤或者學(xué)術(shù)不對之處歡迎及時提出,不甚感謝。
2、 如涉及版權(quán)問題,請聯(lián)系我們4724325@qq.com第一時間處理;
我們從以下三個方面,對比純靜態(tài)和偽靜態(tài)兩種靜態(tài)頁面生成方式,逐一展開分析。
用JS的正則表達(dá)式如何判斷輸入框內(nèi)為中文或者是英文數(shù)字,或者是三者混編
css制作扇形
純CSS3文字Loading動畫特效
PhpStorm 2022.1 EAP 3 在 PHPDoc 和屬性中添加了對多行和嵌套數(shù)組形狀的完全支持:在這種情況下,可以使用數(shù)組形狀注釋定義數(shù)組結(jié)構(gòu),以獲得鍵的代碼補(bǔ)全并推斷值的類型。
Linux程序前臺后臺切換:在Linux終端運(yùn)行命令的時候,在命令末尾加上 & 符號,就可以讓程序在后臺運(yùn)行Ubuntu$">root@Ubuntu$ ./tcpserv01 &
Python 的正則表達(dá)式支持 多行模式,將每行文字分別匹配。然而各種操作系統(tǒng)里,換行符的表示法各不相同,會導(dǎo)致 Python 不能正確使用多行模式。
彈性布局,又稱“Flex布局”,是由W3C老大哥于2009年推出的一種布局方式??梢院啽恪⑼暾?、響應(yīng)式地實(shí)現(xiàn)各種頁面布局。而且已經(jīng)得到所有主流瀏覽器的支持,我們可以放心大膽的使用。