PHP Annotated——2024 年 1 月
PHP Annotated——2024 年 1 月
欢迎来到 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 协议》,转载必须注明作者和本文链接
赞!