歡迎來到 PHP Annotated 一月 !我們將回顧過去一個月 PHP 社群中最有趣的發展,包括精心挑選的新聞、文章、工具和影片。
亮點
PHP 8.2.15 和 PHP 8.3.2 釋出
🐛 這些更新都是錯誤修復。
-
今年,又有四位開發人員加入了 PHP 基金會團隊,以進一步促進 PHP 及其基礎設施的改進:David Carlier、James Titcumb、Saki Takamachi 和 Shivam Mathur。
讓我們歡迎新團隊成員,並祝願他們取得巨大成就!
-
與 2023 年 1 月相比,JavaScript 攀升至第 6 位,PHP 升至第 7 位,C# 保持第 5 位,但在 TIOBE 軟體的程式語言流行度排名中增長領先。
-
可以透過 EAP 嘗試 PhpStorm 即將釋出的功能,並向 PhpStorm 團隊提供反饋。EAP 版本是免費使用的,不需要許可證。
此版本支援 PHPUnit 11、改進 Pest 測試框架、增強程式碼分析功能以及其他許多改進。
PHP 核心
📣 RFC:Opt-in DOM spec-compliance
在保持向後相容性的同時,支援“持續發展規範(Living Specification)”,並以 PHP 8.4 的 HTML 5 RFC 為基礎。
-
目前,允許使用
null
作為函式引數的預設值,即使引數已宣告型別並且不能為 null,也不會生成錯誤。此外,允許在必需引數之前使用可選引數也存在輕微的不一致性。例如,以下簽名是有效的:
function foo(T1 $a, T2 $b = null, T3 $c) {} // 當前有效
Máté Kocsis 和 Gina P. Banyard 將棄用此類宣告,並要求手動標記可為 null。這是向後相容性破壞,但遷移相當直接,並且可以自動化。
function foo(T $var = null) {} // 如果 RFC 接受,則為 棄用警告 function foo(?T $var = null) {} // 正常
✅ RFC:改進 ext/dom 和 ext/xsl 的 callbacks
PHP 8.4 將為
XSLTProcessor::registerPHPFunctions()
和DOMXPath::registerPhpFunctions()
方法提供增強的 callable 型別支援。phpc.social 上的“即將推出的 RFC:Xpath callback 提升,支援匿名函式,別名,和更方便的名稱空間呼叫”
-
PHP 長期致力於將所有資源遷移到物件。RFC 提出了一項關於如何應對這一轉變的計劃。
主要資源(stream、持久 stream)、輔助資源(上下文、過濾、佇列和 bucket)和
Process
資源將在 PHP 9.0 中進行轉換。其他在 PHP 8.4 或其它次要版本。 📊 RFC: Final by default anonymous classes
Daniil Gentili 建議將所有匿名類預設設定為 final 類,並在需要時提供新的
open
關鍵字以使它們成為非最終類。這與 Kotlin 的
new open class {}
類似。📊 RFC: 針對非 POST HTTP 動詞的 RFC1867
Ilija Tovilo 建議新增新函式
request_parse_body()
,以便處理PUT
和PATCH
請求的表單資料。-
這是非技術性的 RFC,源自 php/web-php 的 PR,旨在在 php.net 網站上宣傳 PHP 基金會。
-
已接受 RFC,用於維護 php/policies 儲存庫中的 PHP 開發政策。
工具
@php-wasm/cli——在終端中 PHP 與 WASM 一起執行!
npx @php-wasm/cli -r 'echo "hello world";'
感謝 WordPress 團隊推動這一程式!
如果錯過了,還有基於 wasm 的 PHP wp-now 本地開發環境。
nikic/PHP-Parser 5.0.0——此版本中令人印象深刻的更新列表。
owasp-dep-scan/dep-scan——OWASP 的下一代安全稽核工具。
最近的 DepScan ❤️ PHP 帖子中宣佈支援 PHP 應用程式、軟體包和 WordPress 外掛。
ast-grep/ast-grep——用於程式碼結構搜尋、lint 和重寫的 CLI 工具。最近獲得了實驗性的 PHP 支援。檢查遊樂場。
spatie/tabular-assertions——使用 Pest 或 PHPUnit 進行表格式斷言。
denzyldick/phanalist——使用 Rust 構建 PHP 的快速靜態分析器。與 PHPStan 或 Psalm 相比,它相當小,但有一個如何學習使用 Rust 編寫自己的 PHP 靜態分析器的選項是件好事。
simonhamp/the-og——純 PHP OpenGraph 影像生成器。
valorin/random——用於生成加密安全隨機值的簡易助手程式包。
theodo-group/LLPhant——使用 OpenAI GPT 4 的 PHP 生成式 AI 框架,並受到 Langchain 和 LLamaIndex 的啟發。
archtechx/enums——讓 PHP 列舉變得更好的助手。
JustSteveKing/php-sdk——PHP SDK 的基礎庫。
danog/php-tokio——在 PHP 中使用 Rust 非同步庫。
joanhey/AdapterMan——使用 walkor/workerman 非同步執行幾乎所有的 PHP 應用程式,無需更改框架或應用程式。
Symfony
Abdulbasit Rubeiyya 的將 Laravel 的 Blade 模板引擎與 Symfony 結合使用。
Thomas Hercule 的如何確保 Symfony 應用程式上的所有路由都有訪問控制。
Dalibor Karlović 的將功能 flag 新增到 Symfony 應用程式。
Laravel
spatie/laravel-export——使用 Laravel App 建立靜態網站。
tighten/ziggy——在 JavaScript 使用 Laravel 路由。
defstudio/telegraph——Telegraph 是與 Telegram Bots 流暢互動的 Laravel 包。
nWidart/laravel-modules——Laravel 模組管理。
Grant Holle 的探索 Laravel 11 中的中介軟體。
Will Ides 的 Laravel 面試問題。
Paul Conroy 的冪等性——它是什麼,以及它如何幫助我們的 Laravel API?。
Adam Campbell 的 Laravel 應用與 WordPress 部落格一起執行。
雜項
Davor Minchorov 的構建可維護的 PHP 應用程式:過度工程化與不足工程化。
Roberto Butti 的從 Rector PHP 開始:使用自動化改進您的PHP程式碼。
Erika Heidi 的使用 Autodocs 和 GitHub Actions 在 PHP 中建立自動化文件流水線。
Dzmitry Kazbiarovich 的 PHP 執行時的效能基準測試。
檢查 Symfony 7 與 mod_php、PHP-FPM、Nginx Unit、Roadrunner、FrankenPHP 和 Swoole 的執行比較。
順便提一下,根據 Web 框架基準測試,執行 PHP 最快的方法是 rryqszq4/ngx-php——內嵌 PHP 的 nginx。
Sven Luijten 的在第三方包中使用 interface。
Kamil Ruczyński 的測試技巧。
當關閉 Xdebug 時,是否會影響效能?不會。
Damien Seguy 的 PHP 提示和技巧。
Ryan Chandler 的暢想強大且靜態型別的 PHP。
會議
Laracon EU——荷蘭阿姆斯特丹,2024 年 2 月 5 日至 6 日。
PHP UK——英國倫敦,2024 年 2 月 15 日至 16 日。
荷蘭 PHP 會議——荷蘭阿姆斯特丹,2024 年 3 月 12 日至 15 日。
Laracon India——印度烏代浦,2024 年 3 月 23 日至 24 日。CFP
PHP[TEK] 2024——美國伊利諾伊州芝加哥,2024 年 4 月 23-25 日。CFP
phpday 2024——義大利維羅納,2024 年 5 月 16 日至 17 日。CFP
Laravel Live 丹麥 2024——丹麥哥本哈根,2024 年 8 月 22 日至 23 日。CFP 🆕
Laracon 2024——美國德克薩斯州達拉斯,2024 年 8 月 27 日至 28 日。🆕
如果有任何有趣或有用的連結可以透過 PHP Annotated 分享,請在本文中發表評論或向我們傳送推文。
本作品採用《CC 協議》,轉載必須註明作者和本文連結