搜尋
首頁頭條回顧並展望2023年PHP的發展!

回顧並展望2023年PHP的發展!

導讀:從20 世紀90 年代中期作為個人專案起步,PHP 已經發展成為最受歡迎的Web 開發語言之一,為從小部落格到大型企業應用程式的全部提供支援。

PHP 這個語言在近30年的時間裡經歷了驚人的迭代變化。在過去 10 年內,PHP 以我們無法想像的方式發生變化。

每個新年我都會寫一篇關於 PHP 現況的文章,回顧與展望未來。我們現在就開始!

PHP 基金會

以前,我通常會從最新 PHP 版本的摘要開始寫。但是,這次我想先關注 PHP Foundation。

回顧並展望2023年PHP的發展!

自從PHP 基金會成立以來,已經一年多,它由一個10 名志工加6 名開發人員的團隊組成,由PHP 基金會支付報酬,從事PHP 語言的開發工作。

在去年,我寫了這段文字:

現在尼基塔(一位核心開發人員)已經離開,我有點擔心。但他絕對不是唯一能夠從事 PHP 核心工作的人,在過去的幾年裡,他在 PHP 8.0 和 8.1 方面做了大量工作。

我希望 PHP 基金會能夠盡快跟上步伐,並且在明年有足夠的核心開發人員有時間從事 PHP 方面的工作。

PHP 8.2已經在開發中,儘管還沒有起草很多 RFC。

我認為 2022 年不會是 PHP 最令人興奮的一年,而是增加穩定性的一年,這不會有錯。

我認為,現在可以公平地說,PHP基金會已經正常運作了。他們最近發布了2022 年報告,其中顯示了一組相當可觀的數字:

  • #2022年共募集58 萬美元

  • 基金會將支付6 名開發人員在PHP 核心上的工作

  • 基金會成員在php-src 中完成了近乎一半的提交

  • 他們創建了8 個新的RFC,其中只有一個沒有成功

我認為PHP基金會是PHP 發展過程發生的最好的事情之一。我希望他們能夠在 2023 年進一步改進這門語言。如果你在一家使用 PHP 的公司工作,我強烈建議你們要考慮捐款一些。

PHP 8.2

下面來聊聊使用 PHP 8.2。它通常被開發者認為是一個較小的版本,但它實際上具有許多不錯的功能。

下面舉幾個例子:

只讀類別(ReadOnly):

readonly class PostData
{
public function __construct(
public string $title,
public string $author,
public string $body,
public DateTimeImmutable $createdAt,
public PostState $state,
    ) {}
}

全新的隨機產生器:

$rng = $is_production
    ? new Random\Engine\Secure()
    : new Random\Engine\Mt19937(1234);
$randomizer = new Random\Randomizer($rng);
$randomizer->shuffleString('foobar');

獨立於null的true和false:

function alwaysFalse(): false
{
    return false;
}

析取範式類型:

function generateSlug((HasTitle&HasId)|null $post)
{ /* … */ }
编辑参数:

function connect(
    string $user,
    #[\SensitiveParameter] string $password
) {
// …
}

當然,還有更多,值得你去探索。

考慮到這些年來 PHP 的發展有多瘋狂。我做了一些比較,下面清楚地顯示了這些差異:

生態系統

就像每年一樣,我應該提到Packagist,它是PHP 的套件管理器,到今年它列出了361,000 個套件,比去年增加了60,000個:

回顧並展望2023年PHP的發展!

最令人印象深刻的數字是安裝總量。去年我提到過這個金額:

嗯,順便說一句,最近 Packagist 通過了處理超過 500 億次的安裝里程碑。恭喜Packagist!

我剛剛查了一下,Packagist 現在的安裝量是74,492,061,634 次。一年安裝量增加了 240 億,每月安裝量增加 20 億。綜上所述:PHP 生態系統正在快速發展。

每年兩次,我都會發布版本統計資料。在這些貼文中,我根據 Packagist 的數據分析了整個社群的 PHP 版本使用情況。

我想再次分享該帖子中的圖表:2013 年到現在的時間線,顯示每個版本的使用歷史記錄。

回顧並展望2023年PHP的發展!

雖然很高興看到PHP 8.* 的使用率急劇上升,但也有很大一部分人仍然停留在舊的、運行緩慢的與不安全的PHP版本上。我對 2023 年的希望是看到那些舊版本號下降得更快此。我在以上的版本統計貼文中是這樣寫的:

這些數據精美地形象化了 PHP 社群內部的分歧:一部分與現代 PHP 保持同步,而另一部分則無助地落在後面。

一說到升級,我就想特別提到一個工具:Rector。

Rector 是一款免費的自動化工具,可協助升級你的 PHP 程式碼庫。它所需要的只是少量的配置,它就會為你做大量的工作。

回顧並展望2023年PHP的發展!

我最近用它來更新我的社群驅動內容聚合器 Aggregate to PHP 8.2,它非常有趣且易於使用。

在發布我的版本統計貼文後,有幾個人告訴我他們還沒有更新,並且停留在 PHP 7.* 上,我問他們為什麼?他們告訴我,這只是太多的體力勞動。有趣的是,甚至沒有人嘗試使用像Rector 這樣的工具來幫助他們…

我堅信「程式語言」不僅僅是編譯器:它是在定義「程式語言」方面發揮同等作用的工具和生態系統,我真的認為很多人、專案和企業都會受益,如果他們研究使用像Rector 這樣的自動化工具。

既然我在談論生態系統,就不能不提到 PHP 的兩個最大的框架:Laravel和Symfony。

在過去的幾年裡,Laravel 取得了巨大的發展。他們現在僱用了8 名全職開發人員來開發框架及其生態系統。最重要的是,JetBrains 的開發調查報告稱,67% 的 PHP 開發人員使用 Laravel。

雖然如今與 Laravel 相比,Symfony 作為一個框架可能不太受歡迎,但它仍然是 PHP 社群中最成熟、最穩定的框架之一。它更常用於企業應用程式開發,但它的獨立組件在整個PHP 生態系統中都很流行——Laravel 也有一些對Symfony 組件的依賴,所以不少Symfony 軟體包進入Packagist 的頂級軟體包列表也就不足為奇了。

我還應該提到 WordPress。老實說,我對WordPress既愛又恨。作為用戶,WordPress 很棒。它的安裝和使用非常簡單,我認為這些年來它贏得了每一點人氣。不過,身為開發人員,WordPress 讓我感到難過。無法與現代和安全的 PHP 版本保持同步,為整個 PHP 社群蒙上了陰影。

目前,WordPress 僅對PHP 8.0 提供 Beta 支援。現在,需要明確的是:PHP 8.0 於2020 年發布,3年後的生命週期結束了——而WordPress 目前尚不支援它…

當然,不能正確支援較新的PHP 版本是有原因的,應該由使用者決定它們是否正確。我個人的觀點是,像 WordPress 一樣堅持向後相容的決定主要是業務驅動的:WordPress 的很大一部分是商業部分,他們的客戶群的很大一部分運行舊的 PHP 版本。這是一個惡性循環,雙方互相阻礙,並在一定程度上阻礙了整個 PHP 社群發展。

另一方面,我們應該認識到這樣一個事實,即在將近20 年後,沒有多少軟體專案能夠像WordPress 一樣流行和相關,所以也許他們關於向後相容性的策略是正確的?

超集

最後,我不能不提一下我對PHP的長期夢想。

我現在寫下它,我希望有一天它會成為現實:PHP 的超集,具有適當的 IDE 與靜態分析器支援功能。

我希望它出現的原因有很多。如果你願意,你可以閱讀和傾聽它們,但我真的希望它能成為現實。在 2023 年看到一個被廣泛接受和支持的超集尚待時日,但一些小步驟已經開始了。我肯定會密切注意PXP,它會把事情引向更正確的方向。

綜上所述,我感覺各位開發者一定會喜歡 2023 年!最後一句,為防止萬一你是新來的,我是 Brent,是JetBrains 的開發者佈道師。

註:英文原文網址是:https://stitcher.io/blog/php-in-2023

陳述
本文轉載於:21CTO。如有侵權,請聯絡admin@php.cn刪除
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境