17611538698
info@21cto.com

2026 年的 PHP

编程语言 2 19 12小时前
图片

导读:现在已经是2026年,PHP的世界又开始热情起来了!来让我来告诉你。

现在已是2026年,PHP的世界开始热情起来了!来让我来告诉你。

PHP 8.5


PHP 8.5于2025年 11 月底发布。实际上,大多数的程序员要到 2026 年才会正式使用它。

PHP 8.5 有一些不错的特性,比如管道操作符,但说实话,它缺少一个重要的特性(稍等,我稍后再谈):

$output $input      |> trim (...)    |> ( fn ( string $string ) => str_replace ' ' , '-' , $string ))    |> ( fn ( string $string ) => str_replace ([ '.' , '/' , '…' ], '' , $string ))    |> strtolower (...);

PHP 8.5 的另一个特性是可以在向对象传递数据的同时克隆该对象——就我个人而言,我更喜欢另一种实现方式,但这仍然是一个不错的特性:

final class Book{    public function __construct(        public string $title,        public string $description,    ) {}    public function withTitle(string $title): self    {        return clone($this, [            'title' => $title,        ]);    }}

PHP 8.5 对闭包进行了一些改进,使其可以在属性中使用:

#[SkipDiscovery(static function (Container $container): bool {    return ! $container->get(Application::classinstanceof ConsoleApplication;})]final class BlogPostEventHandlers{ /* … */ }

现在它提供了运行出现发生“致命错误”时的回溯信息:

Fatal error: Maximum execution time of 1 second exceeded in example.php on line 6Stack trace:#0 example.php(6): usleep(100000)#1 example.php(7): recurse()#2 example.php(7): recurse()#3 example.php(7): recurse()#4 example.php(7): recurse()#5 example.php(7): recurse()#6 example.php(7): recurse()#7 example.php(7): recurse()#8 example.php(7): recurse()#9 example.php(7): recurse()#10 example.php(10): recurse()#11 {main}

还有一些其他的小改动。

总体来说,这次发布还算不错,现在让我们再回到管道运算符,看看它在 2026 年会如何变得更加强大。

2025 年底,一项新的 RFC 获得通过,该 RFC 增加了部分函数应用功能。

这个名称听起来很复杂,但解释起来却很简单:通过部分函数应用,你可以创建一个对函数的引用,其中某些参数已经预先填充好了:

$makeSlug = str_replace ( '-' , ' ' , ?)$slug = $makeSlug ( 'Hello World' );

注意到那个问号了吗?那叫做“占位符”(PFA)。

现在 PFA 尤其强大,因为它允许你从任何其他函数创建一个只带一个参数的闭包。结合管道运算符(它总是需要一个只带一个参数的可调用对象),可以重写前面的例子:

$output $input      |> trim (...)     |> ( fn ( string $string ) => str_replace ' ' , '-' , $string ))     |> ( fn ( string $string ) => str_replace ([ '.' , '/' , '…' ], '' , $string ))     |> strtolower (...);

类似于这样:

$output = $input      |> trim (...)     |> str_replace ( ' ' , '-' , ?)     |> str_replace ([ '.' , '/' , '…' ], '' , ?)     |> strtolower (...);

这样就好多了!

我认为 PFA 将释放管道操作符的真正潜力,所以很期待它将在 PHP 8.6 中正式推出。

模式匹配

另一个极具潜力的 RFC 是模式匹配。不过要注意:这个 RFC目前仍在讨论中,它蕴含着巨大的潜力,我希望它能被采纳。

$string match $object ) is {     Foo => 'foo' ,     Bar => 'bar' ,     Baz | Beep => 'baz' , }; if $var is 'heart' | 'spade' | self :: Wild ) {     // Hello! }

FrankenPHP

图片

FrankenPHP已经存在有几年了,但直到去年才与PHP基金会开始合作。我只想说出很多人的心声:我希望FrankenPHP能够成为PHP的默认运行时环境。

FrankenPHP 是一个用 Go 语言编写的全新 PHP 运行时环境,它拥有许多强大的功能,例如用于长时间运行 PHP 脚本的 worker 模式、用于快速部署的“编译为二进制文件”选项、现代化的 HTTP 功能等等。

我真心希望 FrankenPHP 今年能获得更多关注,尤其因为它能相当简单地替代 PHP-FPM,而且无需任何额外操作就能提升 10% 的性能。

Mago

Mago是另一款助力 PHP 生态系统发展的工具:它是一个全新的 PHP 工具链,最近发布了首个稳定版本。

Mago 是一个多功能 PHP 工具链,它整合了三个主要功能:


  • 1、代码格式化(Formatter):类似于 Laravel 的 Pint 或 Prettier 的 PHP 版本,能自动调整代码风格,确保一致性。
  • 2、Lint 检查(Linter):检测语法错误和潜在问题。
  • 3、静态分析(Static Analyzer):类似于 PHPStan 或 Rector,能深入检查代码逻辑、类型安全和最佳实践。


它集 PHP 代码检查器、格式化器和静态分析器于一体,并且是用 Rust 编写的,因此速度极快、效率极高。

我本人已经使用几个月了,我认为它是一款非常棒的工具,相信今年将会迎来巨大的增长。

TrueAsync

TrueAsync 在异步 PHP方面所做的工作,也有可能真正改变 PHP 的格局。他目前正在编写第七版 RFC,并不断进行微调。这是一个棘手的问题,但他似乎非常执着。

我很想看看异步 PHP 的发展前景。Edmond 似乎主要专注于利用多线程处理 CPU 密集型任务,而我认为异步 I/O 在短期内更有利于其他 PHP 项目。不过,这仍然是我们需要密切关注的领域。

PHPverse

倒数第二件要提的事情是PHPverse。去年开发者们首次举办了这场线上大会,取得了巨大的成功。超过 5000 人在线观看了直播,之后又有成千上万的人在线观看了回放。

我很高兴地宣布,PHPverse 将于 2026 年回归!

结语

最后一项有点个人。

过去两年,我一直与来自世界各地的一群才华横溢的程序员合作开发新框架Tempest(https://tempestphp.com/,这是一个面向现代 PHP 开发的新产品。我非常期待 2026 年这个项目会取得更好的进步。目前超过 80 位贡献者和 600 位 Discord 成员加入了这个项目,并持续关注着它的进展。

亲眼见证开源的力量,真是一件令人兴奋的事。对我而言,这定是今年最值得骄傲的时刻之一。

作者:stitcher

编译:洛逸

参考:

https://stitcher.io/blog/php-2026

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信