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

这种语言在近三十年的时间里经历了惊人的转变。即使在过去 10 年内,PHP 也以我们无法想象的方式发生了变化。

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

 

这就是广告的去向。相反,我想将您指向我的 GitHub 赞助商页面。如果您是固定读者并且我的内容对您有帮助,您可以考虑一次性或每月赞助。如果您是一家公司,希望在此博客或我的时事通讯上投放专门的广告,您可以发送电子邮件至 brendt@stitcher.io

 

#PHP基金会

我通常以最新 PHP 版本的摘要开始这些帖子,但这次我想首先关注 PHP Foundation。自基金会成立以来已经一年多了:一个由 10 名志愿者和 6 名开发人员组成的集体被支付从事 PHP 语言的工作。

去年,我写了这个:

现在尼基塔已经下台,我有点担心。他绝对不是唯一能够从事 PHP 核心工作的人,但在过去的几年里,他在 PHP 8.0 和 8.1 方面做了大量工作。我希望 PHP 基金会能够尽快跟上步伐,并且明年有足够的核心开发人员有时间从事 PHP 方面的工作。PHP 8.2 已经在开发中,尽管还没有起草很多 RFC。

我认为 2022 年不会是 PHP 最令人兴奋的一年,而是增加稳定性的一年。没有错。

我认为可以公平地说基金会已经交付。他们最近发布了2022 年报告,其中显示了一些相当可观的数字:

  • 2022 年共筹得580,000 美元
  • 基金会支付6 名开发人员在 PHP 上工作
  • 基金会成员在 php-src 中完成了几乎一半的提交
  • 他们创建了8 个新的 RFC,其中只有一个没有成功

我认为基金会是 PHP 长期以来发生的最好的事情之一,我希望他们能够在 2023 年进一步改进这门语言。如果你在一家使用 PHP 的公司工作,我d 强烈建议您考虑捐赠

#PHP 8.2

继续使用 PHP 8.2。它通常被认为是一个较小的版本,但它仍然具有许多不错的功能。仅举几个例子:

只读类

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');

独立的nulltruefalse

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 亿次安装的里程碑。恭喜包装师!

我刚刚查了一下,我们现在的安装量是 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 的两个最大的框架:LaravelSymfony

在过去的几年里,Laravel 取得了巨大的发展。他们现在雇佣了8 名全职开发人员来开发框架及其生态系统。最重要的是,JetBrains 的开发调查报告称,67% 的 PHP 开发人员使用 Laravel

虽然如今与 Laravel 相比,Symfony 作为一个框架可能不太受欢迎,但它仍然是 PHP 社区中最成熟、最稳定的框架之一。它更常用于企业应用程序开发,但它的独立组件在整个 PHP 生态系统中都很流行——Laravel 也有一些对 Symfony 组件的依赖。不少 Symfony 软件包进入Packagist 的顶级软件包列表也就不足为奇了。

我还应该提到 WordPress。老实说,我对它既爱又恨。作为用户,WordPress 很棒。它的安装和使用非常简单,我认为这些年来它赢得了每一点人气。不过,作为一名开发人员,WordPress 让我感到难过。无法与现代和安全的 PHP 版本保持同步给整个 PHP 社区蒙上了阴影。

目前,WordPress 仅对PHP 8.0 提供 Beta 支持。现在,需要明确的是:PHP 8.0 于 2020 年发布,三年后的生命周期结束了——而 WordPress 尚不支持它……

当然,不能正确支持较新的 PHP 版本是有原因的。由您决定它们是否好。我个人的观点是,像 WordPress 一样坚持向后兼容的决定主要是业务驱动的:WordPress 的很大一部分是商业部分,并且他们的客户群的很大一部分正在运行旧的 PHP 版本。这是一个恶性循环,双方互相阻碍,并在一定程度上阻碍了整个 PHP 社区。

另一方面,我们应该认识到这样一个事实,即在将近 20 年后,没有多少软件项目能够像 WordPress 一样流行和相关,所以也许他们关于向后兼容性的策略是正确的?

#超集

最后,我不能不提一下我对PHP的长期梦想。我写下它谈论它,我希望有一天它会成为现实:PHP 的超集,具有适当的 IDE 和静态分析器支持。

我希望它发生的原因有很多,如果你愿意,你可以阅读和听到它们;但我真的希望它能成为现实。我怀疑我们是否会在 2023 年看到一个被广泛接受和支持的超集,但一些小步骤已经开始了。我肯定会密切关注PXP,它可能会把事情引向正确的方向。


综上所述,我希望您会喜欢 2023 年!以防万一你是新来的:我是 Brent,JetBrains 的开发者倡导者,我写关于 PHP 的文章和视频博客;如果您查看我最近一直在使用的YouTube 频道,我将不胜感激。看看,也许考虑订阅?谢谢!

如果您不喜欢视频但仍想关注我,您可以改为加入 15k 时事通讯订阅者,我希望在那里见到你!

2023 年的 PHP
标签: