8e6a1296dc485bb53cf50464d1f5d0a.jpg

导读:从 20 世纪 90 年代中期作为个人项目起步,PHP 已经发展成为最流行的 Web 开发语言之一,为从小型博客到大型企业应用程序的全部提供支持。

PHP 这个语言在近30年的时间里经历了惊人的迭代变化。在过去 10 年内,PHP 以我们无法想象的方式发生着变化。

每个新年我都会写一篇关于 PHP 现状的文章,回顾与展望未来。我们现在就开始!

PHP 基金会

以前,我通常以最新 PHP 版本的摘要开始写。但是,这次我想首先关注 PHP Foundation。

88df49c3d88077a5ca8a7c6f7998094.jpg

自从 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个:

7058a839edf7b7cf78cd47cc5413d88.jpg

最令人印象深刻的数字是安装总量。去年我提到过这个数额:

嗯,顺便说一句,最近 Packagist 通过了处理超过 500 亿次的安装里程碑。恭喜Packagist!

我刚刚查了一下,Packagist 现在的安装量是74,492,061,634 次。一年安装量增加了 240 亿,每月安装量增加 20 亿。综上所述:PHP 生态系统正在快速发展。

每年两次,我都会发布版本统计信息。在这些帖子中,我根据 Packagist 的数据分析了整个社区的 PHP 版本使用情况。

我想再次分享该帖子中的图表:2013 年到现在的时间线,显示每个版本的使用历史记录。

3a9c5b279ffacf6e92fc34745ebcdb3.jpg

虽然很高兴看到 PHP 8.* 的使用率急剧上升,但也有很大一部分人仍然停留在旧的、运行缓慢的与不安全的 PHP 版本上。我对 2023 年的希望是看到那些旧版本号下降得更快此。我在以上的版本统计帖子中是这样写的:

这些数据精美地形象化了 PHP 社区内部的分歧:一部分与现代 PHP 保持同步,而另一部分则无助地落在后面。

一说到升级,我就想特别提到一个工具:Rector。

Rector 是一款免费的自动化工具,可帮助升级你的 PHP 代码库。它所需要的只是少量的配置,它就会为你做大量的工作。

e87d1194d1ede8de0d89920cff7deda.jpg

我最近用它来更新我的社区驱动内容聚合器 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

点赞(721) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部