2022年P(guān)HP的發(fā)展現(xiàn)狀
PHP作為Web界第一大語(yǔ)言近年來熱度不夠,但是這幾年的進(jìn)步和成長(zhǎng)卻沒有中斷。在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í)參時(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)造一個(gè)很干凈優(yōu)雅的數(shù)據(jù)類。對(duì)比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)勢(shì),有沒有?
PHP在每個(gè)版本中會(huì)帶來此類的這些很棒的語(yǔ)法小糖果改進(jìn)。隨著不斷迭代改進(jìn),相信PHP會(huì)變得越來越優(yōu)雅。
靜態(tài)分析
PHP中的靜態(tài)分析正在顯著改善:
- 諸如Laravel一樣的框架越來越多地采用靜態(tài)類型 (編寫代碼和文檔塊的唯一目的是幫助靜態(tài)分析);
- PhpStorm 添加了對(duì)泛型支持,如果以編寫泛型代碼并讓IDE理解它,那將非常有意義;
PhpStan and psalm也在不斷完善。
異步PHP
異步社區(qū)中的一個(gè)令人興奮的發(fā)展是,來自Amp和ReactPHP(兩個(gè)主要的異步參與者)的開發(fā)人員齊心協(xié)力制作了一個(gè)號(hào)稱與光纖速率相兼容的事件循環(huán)實(shí)現(xiàn),稱為 Revolt PHP。
與整個(gè)社區(qū)相比,異步PHP僅被一小部分人使用; 但是,仍然可以看到異步社區(qū)正在變得強(qiáng)大并擁抱現(xiàn)代PHP。
無服務(wù)器 PHP
無服務(wù)器是現(xiàn)代開發(fā)的一個(gè)方向和確實(shí),PHP在該方面也沒有落后。Matthieu Napoli開發(fā)了一個(gè)無服務(wù)器框架Bref可以讓PHP開發(fā)人員了解這種相對(duì)較新的PHP使用方式,使無服務(wù)器 PHP 變得簡(jiǎn)單。
PHP基金會(huì)
兩個(gè)月前,PHP世界傳來了一個(gè)相當(dāng)大的消息,甚至可能是2021年最大的消息:最活躍的核心維護(hù)者之一Nikita正在從事LLVM的工作,但同時(shí)也有一項(xiàng)新舉措得到了幾個(gè)人的支持大公司最終使核心發(fā)展可持續(xù)。
簡(jiǎn)而言之,PHP基金會(huì)是一個(gè)非營(yíng)利組織,其唯一目標(biāo)是資助PHP核心開發(fā)。該計(jì)劃由JetBrains推動(dòng),他們已經(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萬(wàn)個(gè)注冊(cè)版本和超300的包。其生態(tài)系統(tǒng)不斷發(fā)展壯大,2022 年也不例外。
另外,此前剛剛不久,Packagist 通過了處理超過500億次安裝的里程碑。