导读:从 20 世纪 90 年代中期作为个人项目起步,PHP 已经发展成为最流行的 Web 开发语言之一,为从小型博客到大型企业应用程序的全部提供支持。
PHP 这个语言在近30年的时间里经历了惊人的迭代变化。在过去 10 年内,PHP 以我们无法想象的方式发生着变化。
每个新年我都会写一篇关于 PHP 现状的文章,回顾与展望未来。我们现在就开始!
PHP 基金会
以前,我通常以最新 PHP 版本的摘要开始写。但是,这次我想首先关注 PHP Foundation。
自从 PHP 基金会成立以来,已经一年多,它由一个 10 名志愿者加 6 名开发人员的团队组成,由 PHP 基金会支付报酬,从事 PHP 语言的开发工作。
在去年,我写了这段文字:
现在尼基塔(一位内核开发人员)已经离开,我有点担心。但他绝对不是唯一能够从事 PHP 核心工作的人,在过去的几年里,他在 PHP 8.0 和 8.1 方面做了大量工作。
我希望 PHP 基金会能够尽快跟上步伐,并且在明年有足够的核心开发人员有时间从事 PHP 方面的工作。
PHP 8.2已经在开发中,尽管还没有起草很多 RFC。
我认为 2022 年不会是 PHP 最令人兴奋的一年,而是增加稳定性的一年,这不会有错。
我认为,现在可以公平地说,PHP基金会已经正常运作了。他们最近发布了 2022 年报告,其中显示了一组相当可观的数字:
2022年共募集 580,000 美元
基金会将支付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个:
最令人印象深刻的数字是安装总量。去年我提到过这个数额:
嗯,顺便说一句,最近 Packagist 通过了处理超过 500 亿次的安装里程碑。恭喜Packagist!
我刚刚查了一下,Packagist 现在的安装量是74,492,061,634 次。一年安装量增加了 240 亿,每月安装量增加 20 亿。综上所述:PHP 生态系统正在快速发展。
每年两次,我都会发布版本统计信息。在这些帖子中,我根据 Packagist 的数据分析了整个社区的 PHP 版本使用情况。
我想再次分享该帖子中的图表:2013 年到现在的时间线,显示每个版本的使用历史记录。
虽然很高兴看到 PHP 8.* 的使用率急剧上升,但也有很大一部分人仍然停留在旧的、运行缓慢的与不安全的 PHP 版本上。我对 2023 年的希望是看到那些旧版本号下降得更快此。我在以上的版本统计帖子中是这样写的:
这些数据精美地形象化了 PHP 社区内部的分歧:一部分与现代 PHP 保持同步,而另一部分则无助地落在后面。
一说到升级,我就想特别提到一个工具:Rector。
Rector 是一款免费的自动化工具,可帮助升级你的 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