你所了解的 PHP 可能已经过时了

2023-05-28 0 202

你所了解的 PHP 可能已经过时了

你能像从前那样对 PHP 民主自由聊著。尽管,你可能会对 PHP 在往后的一两年里的许多改良深感惊讶。

— Brent(作者)

你还提过篇盛行的网志该文《 PHP:设计差劲的碎形 》吗?我第一次写到它时,我在两个有许多遗留下来的 PHP 工程项目的差劲地方组织工作。这首诗让我真的我是否应该舍弃,并去做与程式设计完全不同的事。

说实话,我后很快就换了组织工作,更重要的是,好景不长 5.x 版年来,PHP 成功地不断进步了许多。今天,我在向那些不再使用 PHP 程式设计,或者陷于遗留下来工程项目的现代人致谢。

UX21LI2677E:那时有些事依然很差劲,就像几乎五种程式设计词汇都有它的癖好那样。许多核心功能依然有不完全一致的初始化方法,依然有自相矛盾的配置增设,依然有许多开发者在那里写老外的标识符 —— 因为她们必须如此,或者她们不知道更快的读法。

时一拖再拖任何仇恨。

然后,你能像从前那样对 PHP 民主自由聊著。尽管,你可能会对 PHP 在往后的一两年里的许多改良深感惊讶。(LCTT 评注:虽说,我是真的深感惊讶)

提早看推论

PHP 在积极地开发,每年都有新版自 PHP 5 时代年来的操控性早已翻番,如果不是五倍的话有两个非常活跃的架构、包和网络平台的生态系PHP 在往后一两年中加进了许多新功能,因此这种词汇在不断发展像动态分析这样的辅助工具在往后一两年中已经成形,因此一直保持增长 预览:现代人让我展现许多实际的标识符。我真的这没问题!这是我的两个非职业工程项目的 源标识符 ,用 PHP 和 Laravel 撰写的; 这里 列举了她们在服务部保护的数百个民主自由开放源码软件包。这二者都是现代 PHP 工程项目的好范例。

那让她们开始吧。

历史归纳

所致更快地来衡量的目的,让她们快速简述一下如今的 PHP 发布周期性。她们现在的 PHP 为 7.3,预计在 2019 年底为 7.4。PHP 8.0 将是 7.4 后的下两个版。

好景不长 5.x 时代年来,核心团队试图保持每年发布两个版的周期性,因此她们在往后的四年中成功地做到了这一点。

一般来说,每个新版都会在两年内得到积极支持,并再获得一年以上的“安全修复”。其目标是激励 PHP 开发者尽可能保持最新:例如,每年进行小规模升级比在 5.4 到 7.0 之间跳转更容易。

能在 这里 找到 PHP 时间轴的活动概述。

你所了解的 PHP 可能已经过时了

最后,PHP 5.6 是最新的 5.x 版,而 8.0 是当前的下两个大版。如果你想知道 PHP 6 发生了什么,你能听听 PHP Roundtable 播客 。

了解了这个,让她们揭穿许多关于现代 PHP 的常见误解。

PHP 的操控性

早在 5.x 时代,PHP 的表现就是……嗯,平均水平。但是在 7.0 版中,PHP 从头开始重写了核心部分,导致其操控性提升了两到五倍!

但光是嘴说是不够的。让她们来看看基准测试。幸运的是,现代人花了许多时间对 PHP 操控性进行了基准测试。 我发现 Kinsta 有两个很好的预览的测试列表。

自 7.0 升级年来,操控性就一直在提升而没有回退。PHP Web 应用程序的操控性可与其它词汇中的 Web 架构相提并论,甚至在某些情况下更快。你能看看这个 广泛的基准测试套件 。

当然 PHP 架构不会胜过 C 和 Rust,但它们比 Rails 或 Django 要好得多,因此与 ExpressJS 相当。

架构和生态系

说到架构:PHP 可不仅仅是 WordPress。让我告诉你 —— 某些专业的 PHP 开发者:WordPress 绝不代表当代的 PHP 生态系。

一般来说,有两个主要的 Web 应用程序架构, Symfony 和 Laravel ,以及许多较小的应用程序架构。当然还有 Zend、Yii、Cake、Code Igniter 等等,但是如果你想知道现代 PHP 开发是怎么样的,这二者之一都是很好的选择。

这两个架构都有两个庞大的包和产品的生态系。从管理面板和 CRM 到独立应用软件,从 CI 到分析器,以及几个 Web 套接字服务器、队列管理器、支付集成等众多服务。老实说,要列举的内容太多了。

这些架构尽管适用于实际开发。如果你只是需要个内容管理系统(CMS),WordPress 和 CraftCMS 等网络平台就够了。

来衡量 PHP 生态系当前状态的一种方法是查看 Packagist,这是 PHP 主要的应用软件存储库。它现在呈指数级增长。每天下载量达到了 2500 万次,能说 PHP 生态系已不再是从前的小型弱势群体了。

请查看此图表,它列举一段时间内的应用软件和版数量变化。它也能在 Packagist 网站 上找到它。

你所了解的 PHP 可能已经过时了

除了应用程序架构和 CMS 之外,她们还看到往后一两年里异步架构的兴起。

这些是用 PHP 或其他词汇撰写的架构和服务器,允许用户运行真正的异步 PHP,这些范例包括 Swoole (创始人韩天峰),以及 Amp 和 ReactPHP 。

她们早已进入了异步的世界,像 Web 套接字和具有大量 I/O 的应用程序之类的东西在 PHP 世界中早已变得非常重要。

在内部邮件列表里(PHP 核心开发者讨论词汇开发的地方)早已谈到了 将 libuv 加进到核心 。如果你还不知道 libuv:Node.js 全有赖它提供异步性。

词汇本身

尽管尚未提供 async 和 await,但在往后一两年中,PHP 词汇本身早已有了许多改良。这是 PHP 中新功能的非详尽列表:

短闭包 (箭头函数)Null 合并操作符 (??)Trait (一种代码重用方式)属性类型展开操作符 (参数解包 …)JIT 编译器 (即时编译器)FFI (外部函数接口)匿名类返回类型声明现代化的加密支持生成器等等

当她们讨论词汇功能时,她们还要谈谈当今该词汇的发展过程。尽管社区能提出 RFC,但是得有两个活跃的志愿者核心团队才能推着它前进。

接下来,这些 RFC 将在“内部”邮件列表中进行讨论,这个邮件列表也能 在线阅读 。在加进新的词汇特性之前,必须进行投票。只有得到了至少 2/3 多数同意的 RFC 才能进入核心。

可能有大约 100 人能够投票,但不需要每个人对每个 RFC 进行投票。核心团队的成员当然能投票,她们是保护标识符库的人。除了她们之外,还有一群人从 PHP 社区中被单独挑选出来。这些人包括 PHP 文档的保护者,对 PHP 工程项目整体有贡献的人,以及 PHP 社区中的杰出开发者。

尽管大多数核心开发都是在自愿的基础上完成的,但其中一位核心 PHP 开发者 Nikita Popov 最近受雇于 JetBrains 全职从事于 PHP 词汇的开发。另两个范例是 Linux 基金会最近决定 投资 Zend 架构 。像这样的雇佣和收购确保了 PHP 未来发展的稳定性。

辅助工具

除了核心本身,她们看到往后一两年中围绕它的辅助工具有所增加。首先浮现于我脑海中的是动态分析器,比如由 Vimeo 创建 Psalm ,以及 Phan 和 PHPStan 。

这些辅助工具将动态分析你的 PHP 标识符并报告任何类型错误和可能的错误等。在某种程度上,它们提供的功能能与 TypeScript 进行比较,但是现在这种词汇不能 转译(transpiling),因此不支持使用自定义语法。

尽管这意味着她们需要依赖 docblocks,但是 PHP 之父 Rasmus Lerdorf 确实提到了 加进动态分析引擎 到核心的想法。尽管会有许多潜力,但这是一项艰巨的任务。

说到转译,以及受到 JavaScript 社区的启发;她们早已努力在用户领域中扩展 PHP 语法。两个名为 Pre 的工程项目正是如此:允许将新的 PHP 语法转译为普通的 PHP 标识符。

尽管这个思路早已在 JavaScript 世界中被证明了,但如果提供了适当的 IDE 和动态分析支持,它就能在 PHP 中组织工作了。这是两个非常有趣的想法,但必须发展起来才能称之为“主流”。

结语

尽管如此,你依然能将 PHP 视为一种差劲的词汇。尽管这种词汇肯定有它的缺点和背负了 20 年的遗产;但我能放胆地说,我喜欢用它组织工作。

根据我的经验,我能够创建可靠、可保护和高质量的软件。我组织工作的客户对最终结果深感满意,“俺也那样”。

尽管依然能用 PHP 做许多乱七八糟的事,但我认为如果明智和正确地使用的话,它是 Web 开发的绝佳选择。

你不同意吗?让我知道为什么!你能通过 Twitter 或 电子邮件 与我联系。

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

作者: Brent 选题: lujun9972 译者: wxy 校对: wxy

本文由 LCTT 原创编译, Linux中国 荣誉推出

点击“了解更多”可访问文内链接

相关文章

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

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