導(dǎo)讀:從 20 世紀(jì) 90 年代中期作為個(gè)人項(xiàng)目起步,PHP 已經(jīng)發(fā)展成為最流行的 Web 開(kāi)發(fā)語(yǔ)言之一,為從小型博客到大型企業(yè)應(yīng)用程序的全部提供支持。
PHP 這個(gè)語(yǔ)言在近30年的時(shí)間里經(jīng)歷了驚人的迭代變化。在過(guò)去 10 年內(nèi),PHP 以我們無(wú)法想象的方式發(fā)生著變化。
每個(gè)新年我都會(huì)寫(xiě)一篇關(guān)于 PHP 現(xiàn)狀的文章,回顧與展望未來(lái)。我們現(xiàn)在就開(kāi)始!
PHP 基金會(huì)
以前,我通常以最新 PHP 版本的摘要開(kāi)始寫(xiě)。但是,這次我想首先關(guān)注 PHP Foundation。
自從 PHP 基金會(huì)成立以來(lái),已經(jīng)一年多,它由一個(gè) 10 名志愿者加 6 名開(kāi)發(fā)人員的團(tuán)隊(duì)組成,由 PHP 基金會(huì)支付報(bào)酬,從事 PHP 語(yǔ)言的開(kāi)發(fā)工作。
在去年,我寫(xiě)了這段文字:
現(xiàn)在尼基塔(一位內(nèi)核開(kāi)發(fā)人員)已經(jīng)離開(kāi),我有點(diǎn)擔(dān)心。但他絕對(duì)不是唯一能夠從事 PHP 核心工作的人,在過(guò)去的幾年里,他在 PHP 8.0 和 8.1 方面做了大量工作。
我希望 PHP 基金會(huì)能夠盡快跟上步伐,并且在明年有足夠的核心開(kāi)發(fā)人員有時(shí)間從事 PHP 方面的工作。
PHP 8.2已經(jīng)在開(kāi)發(fā)中,盡管還沒(méi)有起草很多 RFC。
我認(rèn)為 2022 年不會(huì)是 PHP 最令人興奮的一年,而是增加穩(wěn)定性的一年,這不會(huì)有錯(cuò)。
我認(rèn)為,現(xiàn)在可以公平地說(shuō),PHP基金會(huì)已經(jīng)正常運(yùn)作了。他們最近發(fā)布了 2022 年報(bào)告,其中顯示了一組相當(dāng)可觀的數(shù)字:
2022年共募集 580,000 美元
基金會(huì)將支付6 名開(kāi)發(fā)人員在 PHP 內(nèi)核上的工作
基金會(huì)成員在 php-src 中完成了近乎一半的提交
他們創(chuàng)建了8 個(gè)新的 RFC,其中只有一個(gè)沒(méi)有成功
我認(rèn)為PHP基金會(huì)是 PHP 發(fā)展過(guò)程發(fā)生的最好的事情之一。我希望他們能夠在 2023 年進(jìn)一步改進(jìn)這門(mén)語(yǔ)言。如果你在一家使用 PHP 的公司工作,我強(qiáng)烈建議你們要考慮捐贈(zèng)一些。
PHP 8.2
下面來(lái)聊聊使用 PHP 8.2。它通常被開(kāi)發(fā)者認(rèn)為是一個(gè)較小的版本,但它實(shí)際上具有許多不錯(cuò)的功能。
下面舉幾個(gè)例子:
只讀類(lèi)(ReadOnly):
readonly?class?PostData { public?function?__construct( public?string?$title, public?string?$author, public?string?$body, public?DateTimeImmutable?$createdAt, public?PostState?$state, ????)?{} }
全新的隨機(jī)發(fā)生器:
$rng?=?$is_production ??????new?Random\Engine\Secure() ????:?new?Random\Engine\Mt19937(1234); $randomizer?=?new?Random\Randomizer($rng); $randomizer->shuffleString('foobar');
獨(dú)立于null的true和false:
function?alwaysFalse():?false { ????return?false; }
析取范式類(lèi)型:
function?generateSlug((HasTitle&HasId)|null?$post) {?/*?…?*/?} 編輯參數(shù): function?connect( ????string?$user, ????#[\SensitiveParameter]?string?$password )?{ //?… }
當(dāng)然,還有更多,值得你去探索。
考慮到這些年來(lái) PHP 的發(fā)展有多么瘋狂。我做了一些比較,下面清楚地顯示了這些差異:
生態(tài)系統(tǒng)
就像每年一樣,我應(yīng)該提到Packagist,它是 PHP 的包管理器,到今年它列出了 361,000 個(gè)包,比去年增加了 60,000個(gè):
最令人印象深刻的數(shù)字是安裝總量。去年我提到過(guò)這個(gè)數(shù)額:
嗯,順便說(shuō)一句,最近 Packagist 通過(guò)了處理超過(guò) 500 億次的安裝里程碑。恭喜Packagist!
我剛剛查了一下,Packagist 現(xiàn)在的安裝量是74,492,061,634 次。一年安裝量增加了 240 億,每月安裝量增加 20 億。綜上所述:PHP 生態(tài)系統(tǒng)正在快速發(fā)展。
每年兩次,我都會(huì)發(fā)布版本統(tǒng)計(jì)信息。在這些帖子中,我根據(jù) Packagist 的數(shù)據(jù)分析了整個(gè)社區(qū)的 PHP 版本使用情況。
我想再次分享該帖子中的圖表:2013 年到現(xiàn)在的時(shí)間線,顯示每個(gè)版本的使用歷史記錄。
雖然很高興看到 PHP 8.* 的使用率急劇上升,但也有很大一部分人仍然停留在舊的、運(yùn)行緩慢的與不安全的 PHP 版本上。我對(duì) 2023 年的希望是看到那些舊版本號(hào)下降得更快此。我在以上的版本統(tǒng)計(jì)帖子中是這樣寫(xiě)的:
這些數(shù)據(jù)精美地形象化了 PHP 社區(qū)內(nèi)部的分歧:一部分與現(xiàn)代 PHP 保持同步,而另一部分則無(wú)助地落在后面。
一說(shuō)到升級(jí),我就想特別提到一個(gè)工具:Rector。
Rector 是一款免費(fèi)的自動(dòng)化工具,可幫助升級(jí)你的 PHP 代碼庫(kù)。它所需要的只是少量的配置,它就會(huì)為你做大量的工作。
我最近用它來(lái)更新我的社區(qū)驅(qū)動(dòng)內(nèi)容聚合器 Aggregate to PHP 8.2,它非常有趣且易于使用。
在發(fā)布我的版本統(tǒng)計(jì)帖子后,有幾個(gè)人告訴我他們還沒(méi)有更新,并且停留在 PHP 7.* 上,我問(wèn)他們?yōu)槭裁??他們告訴我,這只是太多的體力勞動(dòng)。有意思的是,甚至沒(méi)有人嘗試使用像 Rector 這樣的工具來(lái)幫助他們……
我堅(jiān)信“編程語(yǔ)言”不僅僅是編譯器:它是在定義“編程語(yǔ)言”方面發(fā)揮同等作用的工具和生態(tài)系統(tǒng),我真的認(rèn)為很多人、項(xiàng)目和企業(yè)都會(huì)受益,如果他們研究使用像 Rector 這樣的自動(dòng)化工具。
既然我在談?wù)撋鷳B(tài)系統(tǒng),就不能不提到 PHP 的兩個(gè)最大的框架:Laravel和Symfony。
在過(guò)去的幾年里,Laravel 取得了巨大的發(fā)展。他們現(xiàn)在雇傭了8 名全職開(kāi)發(fā)人員來(lái)開(kāi)發(fā)框架及其生態(tài)系統(tǒng)。最重要的是,JetBrains 的開(kāi)發(fā)調(diào)查報(bào)告稱(chēng),67% 的 PHP 開(kāi)發(fā)人員使用 Laravel。
雖然如今與 Laravel 相比,Symfony 作為一個(gè)框架可能不太受歡迎,但它仍然是 PHP 社區(qū)中最成熟、最穩(wěn)定的框架之一。它更常用于企業(yè)應(yīng)用程序開(kāi)發(fā),但它的獨(dú)立組件在整個(gè) PHP 生態(tài)系統(tǒng)中都很流行——Laravel 也有一些對(duì) Symfony 組件的依賴(lài),所以不少 Symfony 軟件包進(jìn)入Packagist 的頂級(jí)軟件包列表也就不足為奇了。
我還應(yīng)該提到 WordPress。老實(shí)說(shuō),我對(duì)WordPress既愛(ài)又恨。作為用戶(hù),WordPress 很棒。它的安裝和使用非常簡(jiǎn)單,我認(rèn)為這些年來(lái)它贏得了每一點(diǎn)人氣。不過(guò),作為一名開(kāi)發(fā)人員,WordPress 讓我感到難過(guò)。無(wú)法與現(xiàn)代和安全的 PHP 版本保持同步,給整個(gè) PHP 社區(qū)蒙上了陰影。
目前,WordPress 僅對(duì)PHP 8.0 提供 Beta 支持?,F(xiàn)在,需要明確的是:PHP 8.0 于 2020 年發(fā)布,3年后的生命周期結(jié)束了——而 WordPress 目前尚不支持它……
當(dāng)然,不能正確支持較新的 PHP 版本是有原因的,應(yīng)該由用戶(hù)決定它們是否正確。我個(gè)人的觀點(diǎn)是,像 WordPress 一樣堅(jiān)持向后兼容的決定主要是業(yè)務(wù)驅(qū)動(dòng)的:WordPress 的很大一部分是商業(yè)部分,并且他們的客戶(hù)群的很大一部分運(yùn)行舊的 PHP 版本。這是一個(gè)惡性循環(huán),雙方互相阻礙,并在一定程度上阻礙了整個(gè) PHP 社區(qū)發(fā)展。
另一方面,我們應(yīng)該認(rèn)識(shí)到這樣一個(gè)事實(shí),即在將近 20 年后,沒(méi)有多少軟件項(xiàng)目能夠像 WordPress 一樣流行和相關(guān),所以也許他們關(guān)于向后兼容性的策略是正確的?
超集
最后,我不能不提一下我對(duì)PHP的長(zhǎng)期夢(mèng)想。
我現(xiàn)在寫(xiě)下它,我希望有一天它會(huì)成為現(xiàn)實(shí):PHP 的超集,具有適當(dāng)?shù)?IDE 與靜態(tài)分析器支持功能。
我希望它出現(xiàn)的原因有很多。如果你愿意,你可以閱讀和傾聽(tīng)它們,但我真的希望它能成為現(xiàn)實(shí)。在 2023 年看到一個(gè)被廣泛接受和支持的超集尚待時(shí)日,但一些小步驟已經(jīng)開(kāi)始了。我肯定會(huì)密切關(guān)注PXP,它會(huì)把事情引向更正確的方向。
綜上所述,我感覺(jué)各位開(kāi)發(fā)者一定會(huì)喜歡 2023 年!最后一句,為防止萬(wàn)一你是新來(lái)的,我是 Brent,是JetBrains 的開(kāi)發(fā)者布道師。
注:英文原文地址是:https://stitcher.io/blog/php-in-2023

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門(mén)文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開(kāi)發(fā)環(huán)境

Dreamweaver CS6
視覺(jué)化網(wǎng)頁(yè)開(kāi)發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

在PHP中搭建社交分享功能的核心方法是通過(guò)動(dòng)態(tài)生成符合各平臺(tái)要求的分享鏈接。1.首先獲取當(dāng)前頁(yè)面或指定的URL及文章信息;2.使用urlencode對(duì)參數(shù)進(jìn)行編碼;3.根據(jù)各平臺(tái)協(xié)議拼接生成分享鏈接;4.在前端展示鏈接供用戶(hù)點(diǎn)擊分享;5.動(dòng)態(tài)生成頁(yè)面OG標(biāo)簽優(yōu)化分享內(nèi)容展示;6.務(wù)必對(duì)用戶(hù)輸入進(jìn)行轉(zhuǎn)義以防止XSS攻擊。該方法無(wú)需復(fù)雜認(rèn)證,維護(hù)成本低,適用于大多數(shù)內(nèi)容分享需求。

要實(shí)現(xiàn)PHP結(jié)合AI進(jìn)行文本糾錯(cuò)與語(yǔ)法優(yōu)化,需按以下步驟操作:1.選擇適合的AI模型或API,如百度、騰訊API或開(kāi)源NLP庫(kù);2.通過(guò)PHP的curl或Guzzle調(diào)用API并處理返回結(jié)果;3.在應(yīng)用中展示糾錯(cuò)信息并允許用戶(hù)選擇是否采納;4.使用php-l和PHP_CodeSniffer進(jìn)行語(yǔ)法檢測(cè)與代碼優(yōu)化;5.持續(xù)收集反饋并更新模型或規(guī)則以提升效果。選擇AIAPI時(shí)應(yīng)重點(diǎn)評(píng)估準(zhǔn)確率、響應(yīng)速度、價(jià)格及對(duì)PHP的支持。代碼優(yōu)化應(yīng)遵循PSR規(guī)范、合理使用緩存、避免循環(huán)查詢(xún)、定期審查代碼,并借助X

1.評(píng)論系統(tǒng)商業(yè)價(jià)值最大化需結(jié)合原生廣告精準(zhǔn)投放、用戶(hù)付費(fèi)增值服務(wù)(如上傳圖片、評(píng)論置頂)、基于評(píng)論質(zhì)量的影響力激勵(lì)機(jī)制及合規(guī)匿名數(shù)據(jù)洞察變現(xiàn);2.審核策略應(yīng)采用前置審核 動(dòng)態(tài)關(guān)鍵詞過(guò)濾 用戶(hù)舉報(bào)機(jī)制組合,輔以評(píng)論質(zhì)量評(píng)分實(shí)現(xiàn)內(nèi)容分級(jí)曝光;3.防刷需構(gòu)建多層防御:reCAPTCHAv3無(wú)感驗(yàn)證、Honeypot蜜罐字段識(shí)別機(jī)器人、IP與時(shí)間戳頻率限制阻止灌水、內(nèi)容模式識(shí)別標(biāo)記可疑評(píng)論,持續(xù)迭代應(yīng)對(duì)攻擊。

用戶(hù)語(yǔ)音輸入通過(guò)前端JavaScript的MediaRecorderAPI捕獲并發(fā)送至PHP后端;2.PHP將音頻保存為臨時(shí)文件后調(diào)用STTAPI(如Google或百度語(yǔ)音識(shí)別)轉(zhuǎn)換為文本;3.PHP將文本發(fā)送至AI服務(wù)(如OpenAIGPT)獲取智能回復(fù);4.PHP再調(diào)用TTSAPI(如百度或Google語(yǔ)音合成)將回復(fù)轉(zhuǎn)為語(yǔ)音文件;5.PHP將語(yǔ)音文件流式返回前端播放,完成交互。整個(gè)流程由PHP主導(dǎo)數(shù)據(jù)流轉(zhuǎn)與錯(cuò)誤處理,確保各環(huán)節(jié)無(wú)縫銜接。

PHP不直接進(jìn)行AI圖像處理,而是通過(guò)API集成,因?yàn)樗瞄L(zhǎng)Web開(kāi)發(fā)而非計(jì)算密集型任務(wù),API集成能實(shí)現(xiàn)專(zhuān)業(yè)分工、降低成本、提升效率;2.整合關(guān)鍵技術(shù)包括使用Guzzle或cURL發(fā)送HTTP請(qǐng)求、JSON數(shù)據(jù)編解碼、API密鑰安全認(rèn)證、異步隊(duì)列處理耗時(shí)任務(wù)、健壯錯(cuò)誤處理與重試機(jī)制、圖像存儲(chǔ)與展示;3.常見(jiàn)挑戰(zhàn)有API成本失控、生成結(jié)果不可控、用戶(hù)體驗(yàn)差、安全風(fēng)險(xiǎn)和數(shù)據(jù)管理難,應(yīng)對(duì)策略分別為設(shè)置用戶(hù)配額與緩存、提供prompt指導(dǎo)與多圖選擇、異步通知與進(jìn)度提示、密鑰環(huán)境變量存儲(chǔ)與內(nèi)容審核、云存

PHP通過(guò)數(shù)據(jù)庫(kù)事務(wù)與FORUPDATE行鎖確保庫(kù)存扣減原子性,防止高并發(fā)超賣(mài);2.多平臺(tái)庫(kù)存一致性需依賴(lài)中心化管理與事件驅(qū)動(dòng)同步,結(jié)合API/Webhook通知及消息隊(duì)列保障數(shù)據(jù)可靠傳遞;3.報(bào)警機(jī)制應(yīng)分場(chǎng)景設(shè)置低庫(kù)存、零/負(fù)庫(kù)存、滯銷(xiāo)、補(bǔ)貨周期和異常波動(dòng)策略,并按緊急程度選擇釘釘、短信或郵件通知責(zé)任人,且報(bào)警信息需完整明確,以實(shí)現(xiàn)業(yè)務(wù)適配與快速響應(yīng)。

PHPisstillrelevantinmodernenterpriseenvironments.1.ModernPHP(7.xand8.x)offersperformancegains,stricttyping,JITcompilation,andmodernsyntax,makingitsuitableforlarge-scaleapplications.2.PHPintegrateseffectivelyinhybridarchitectures,servingasanAPIgateway

選擇合適AI語(yǔ)音識(shí)別服務(wù)并集成PHPSDK;2.用PHP調(diào)用ffmpeg將錄音轉(zhuǎn)為API要求格式(如wav);3.上傳文件至云存儲(chǔ)并調(diào)用API異步識(shí)別;4.解析JSON結(jié)果并用NLP技術(shù)整理文本;5.生成Word或Markdown文檔完成會(huì)議記錄自動(dòng)化,全過(guò)程需確保數(shù)據(jù)加密、訪問(wèn)控制與合規(guī)性以保障隱私安全。