「最好的语言」PHP在2019年:缺点还有,但会变得更好

2023-09-06 0 377

PHP 是一类开放源码的通用计算机系统脚本词汇,适用于网络合作开发并可内嵌 HTML 中采用。它的句法先进经验吸收 C 词汇、Java 和 Perl 等流行计算机系统词汇的特点,更易一般开发人员学习。但由于昂西桑县用,也是被许多人聊著的一类词汇。上面,来看一看这位曾觉得 PHP 槽点满满译者怎么说……

2012 年有一则颇受欢迎的网志:PHP: a fractal of bad design。译者在该文对 PHP 大张挞伐,几乎就差说这是反人类的设计了。第一次读到该文时,我正在两个头痛的地方处理许多遗留下来的 PHP 工程项目。念完文章时,我已经开始思索是否要请辞去做许多与程式设计完全不同的事情。

幸运地的是,此后不久我就换了工作,而且 PHP 从 5.* 已经开始也高速成长了许多。那时,我想对那些不再采用 PHP 程式设计,或者被遗留下来工程项目所苦的人说点什么。

Spoiler:PHP 跟其他程式设计词汇一样,都有点自己的毛病。许多核心表达式的方式亲笔签名不一致,配置设置依然里伊,依然有许多合作开发者在写老外的标识符——因为她们必须这种做,换句话说,她们没有更快的方式。

但那时,我想说的是 PHP 好的一面:看一看 PHP 的高速成长,共同深入探讨呵呵如何撰写整洁且可保护的 PHP 标识符。希望大家能暂时把仇恨放入肚皮里,即便只有几秒钟。等我说完,你能把它们再拿出来,但你一定会吃惊于往后一两年里 PHP 的高速成长。

加速阅读

PHP 每年都在积极合作开发新版自 PHP 5 时代以来,性能至少增加一倍,甚至有可能是曾的五倍有极为活跃的架构、包和平台生态系往后一两年增加了许多新优点,词汇也在不断发展中像动态解析器这种的工具已经成熟,并且会越来越多

更新:有人让我展现许多标识符实例,这当然能!上面有两个范例:两个是我比较喜欢的工程项目,是用 PHP 和 Laravel 词汇撰写的;除了两个是她们办公室保护的数百个 OSS 包的条目。标识符门牌号如下:

https://github.com/brendt/aggregate.stitcher.iohttps://spatie.be/opensource/packages

那她们已经开始吧。

时代背景

首先,她们加速简述呵呵 PHP 的正式发布周期。现在的 PHP 版是 7.3,预计 2019 年底将正式发布 7.4,然后说行版将是 PHP 8.0。

自 5.* 时代之后,其核心团队努力保持着一年一版的正式发布周期,并在往后四年中成功做到了这一点。

一般来说,每两个新版都有两年的有效支持期,然后再用一年来做「安全修复」。这么做的目的是鼓励 PHP 合作开发者尽可能采用最新版,因为每年的小升级比从 5.4 跳到 7.0 版要容易得多。

PHP 的版时间表如下:

「最好的语言」PHP在2019年:缺点还有,但会变得更好

其中,PHP 5.6 是 5.*时代的最新版,它的下两个版就是 7.0。如果您想知道 PHP 6 发生了什么,能收听 PHP 圆桌播客 :

https://www.phproundtable.com/episode/what-happened-to-php-6

了解这些之后,她们能进一步深入探讨关于 PHP 的常见误解了。

PHP 性能

5.* 时代的 PHP 性能充其量也不过是平均水平,但在 7.0 中,PHP 核心的大部分内容都被完全重写,性能也因此提高了两到五倍。

光说不练假把式,她们用基准测试结果说话。有人对 PHP 的性能进行过基准测试,这些测试被很好地记录在了 Kinsta 上:

PHP Benchmarks: Real-World Speed Tests for Versions 8.1, 8.2, and 8.3

自从 7.0 出现以后,PHP 的性能一直处于上升期。PHP web 应用的性能与其他词汇的 web 架构相当 (在某些情况下甚至更快)。不信能看一看这个通用基准测试包:

https://github.com/thebenchmarker/webframeworks

PHP 架构虽然没办法做到比 C 和 Rust 更快,但它比 Rails 或 Django 要好得多,并且能与 ExpressJS 相媲美。

架构和生态系

说到架构,PHP 已经不再只是 WordPress 了。作为一名专业的 PHP 合作开发者,我想说的是:WordPress 根本不能代表现在的生态系。

一般有两个主要的 web 应用程序架构和许多小架构,比如 Symfony 和 Laravel。当然,除了 Zend、Yii、Cake、Code Igniter 等,但只有这两种主要的架构才能代表如今的 PHP。

这两个架构都有两个包含大量包和产品的生态系。从管理面板和 CRM 到独立的软件包、CI、profiler,众多如 web sockets 服务器、队列管理器、支付集成这种的服务…… 能拿得出手的东西太多了。

不过,这些架构是用于实际合作开发的。如果你需要纯粹的内容管理,像 WordPress 和 CraftCMS 这种的平台只会越来越好。

测试 PHP 生态系当前状态的一类方式是查看 Packagist,它是 PHP 的主要 package 存储库。它呈指数级增长,每天大约有 2500 万次的下载量。公平地说,PHP 生态系已经不再是往后的小输家了。

上面的图表,列出了包和版的数量随时间的变化。

「最好的语言」PHP在2019年:缺点还有,但会变得更好

除了应用程序架构和 CMS,近年来异步架构也逐步兴起。

这些架构和服务器是用 PHP 或其他词汇撰写的,通过这些架构,用户能实现真正的异步 PHP。Swoole、Amp 和 ReactPHP 都是很好的范例。

自从她们进入异步世界以来,像 web sockets 和具有大量 IO 的应用程序之类的东西已经与 PHP 世界息息相关。

在内部邮件条目(内核合作开发者讨论如何合作开发该词汇的地方)上也有关于将 libuv 添加到内核的讨论。

词汇本身

虽然 async 和 await 功能都还不能用,但在往后一两年里,PHP 词汇本身已经做了许多改进。上面列出了 PHP 的部分新优点:

Short ClosuresNull coalescing operatorTraitTyped propertiesSpread operatorJIT compiler FFIAnonymous classesReturn type declarationsContemporary cryptographyGenerators

除了词汇优点,她们也应该看呵呵词汇的发展过程。虽然社区也会提出 RFCs,但两个活跃的核心志愿团队才是推动词汇的发展的根本。

这些 RFCs 会在「内部」邮件条目中进行讨论。在添加新的词汇优点之前,必须进行投票,获得至少 2/3 支持的 RFC 才能被写入内核。

大概有 100 个人有投票权,虽然她们不必对每个 RFC 都进行投票。这些人中必须包括核心团队的成员,因为她们要保护标识符库。剩下的投票者主要是从 PHP 社区中挑选出来的,这些人包括 PHP 文档的保护者、整个 PHP 工程项目的贡献者以及 PHP 社区中的杰出合作开发者。

虽然大多数核心合作开发都是在自愿的基础上完成的,但作为核心 PHP 合作开发者之一,Nikita Popov 最近已被 JetBrains 聘用,成为了全职的 PHP 合作开发者。另外,Linux 基金会最近也决定投资 Zend framework。这种的雇佣和收购确保了 PHP 未来发展的稳定性。

工具包

除了程序内核本身,PHP 工具包的数量也在不断增加。动态解析器 Psalm(由 Vimeo 创建)、Phan 和 PHPStan 都是很好的范例。

这些工具能对 PHP 标识符做动态分析,并会报告任何类型的错误、可能的 bug 等。在某种程度上,它们的功能几乎能赶上 TypeScript 了,不过目前这种词汇还无法实现源到源编译,因此不允许采用自定义句法。

尽管这意味着她们需要依赖 docblock,但 PHP 的最初创建者 Rasmus Lerdorf 确实提到了向内核添加动态分析引擎的想法。这个想法潜力巨大,但这是一项艰巨的任务。

为了像 JavaScript 那样实现源到源编译,PHP 合作开发者们也一直努力在用户端扩展 PHP 句法。两个名为 Pre 的工程项目就在做这种的事:将新的 PHP 句法转换为普通的 PHP 标识符。

虽然 JavaScript 中已经实现了这个想法,但只有提供合适的 IDE 和动态分析支持,它才能在 PHP 中工作。这个想法很有意思,但它还需要不断高速成长,才有可能成为「主流」。

结语

说了这么多,你依然能聊著说 PHP 是一类老外的词汇。虽然它还是有许多优点和 20 年的遗留下来问题,但我依然热爱这门词汇。

以我的经验来看,我能够写出可靠易保护且高质量的软件。我和客户对最终的结果也都是满意的。

虽然采用 PHP 还会有许多乱七八糟的事情,但如果采用得当,我认为它还是两个不错的网络合作开发选择。

原文链接:

https://stitcher.io/blog/php-in-2019

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务