php网站内容管理系统( 你可以像以前一样对PHP自由吐槽吗?|剧透)

优采云 发布时间: 2022-02-03 18:09

  php网站内容管理系统(

你可以像以前一样对PHP自由吐槽吗?|剧透)

  

  您可以像以前一样自由地抱怨 PHP。虽然,您可能会对 PHP 在过去几年中所做的一些改进感到惊讶。

  ——布伦特(作者)

  你还记得流行的博客文章“PHP:设计糟糕的分形”吗?我第一次阅读它时,我在一个糟糕的地方工作,有很多遗留的 PHP 项目。这个 文章 让我想知道我是否应该放弃并做一些与编程完全不同的事情。

  幸运的是,我很快就换了工作,更重要的是,PHP 自 5.x 版本以来已经取得了很大的进步。今天,我要向不再使用 PHP 编程或陷入遗留项目的人们致以问候。

  剧透:今天有些东西仍然很糟糕,就像几乎每种编程语言都有其怪癖一样。许多核心函数仍然存在不一致的调用方法,仍然存在令人困惑的配置设置,并且仍然有许多开发人员编写糟糕的代码——因为他们不得不这样做,或者他们不知道更好的编写方法。

  今天我想看看好的一面:让我们关注发生了哪些变化,以及编写干净和可维护的 PHP 代码的方法。在那之前,我想请你暂时搁置任何偏见。

  然后,您可以像以前一样自由地抱怨 PHP。虽然,您可能会对 PHP 在过去几年中所做的一些改进感到惊讶。(LCTT译注:说实话,我真的很惊讶)

  提前看结论

  所以让我们开始吧。

  历史总结

  为了更好地衡量,让我们快速回顾一下今天的 PHP 发布周期。我们目前的 PHP 是 7.3,预计到 2019 年底将是 7.4。PHP 8.0 将是 7.4 之后的下一个版本。

  从 5.x 时*敏*感*词*始,核心团队一直在努力维持每年一次的发布周期,并且在过去的四年里他们已经成功地做到了这一点。

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

  可以在此处找到 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 框架相当,在某些情况下甚至优于其他语言的 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 生态系统当前状态的一种方法是查看 PHP 的主要包存储库 Packagist。它现在呈指数级增长。每天有 2500 万的下载量,可以说 PHP 生态不再是从前的小失败者。

  查看此图表,其中列出了包和版本数量随时间的变化。它也可以在 Packagist 网站 上找到。

  

  除了应用框架和cms,我们也看到了异步框架在过去几年的兴起。

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

  我们已经进入了异步世界,Web 套接字和 I/O 繁重的应用程序之类的东西在 PHP 世界中变得非常重要。

  在内部邮件列表(PHP 核心开发人员讨论语言开发的地方)上已经讨论了将 libuv 添加到核心。如果你还不知道 libuv:Node.js 就是提供异步性。

  语言本身

  虽然 async 和 await 尚不可用,但 PHP 语言本身在过去几年中已经有了许多改进。以下是 PHP 新特性的非详尽列表:

  当我们讨论语言特性时,我们也想谈谈今天的语言发展。虽然社区可以提出 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 相当的功能,但现在无法转译语言,因此不支持自定义语法。

  虽然这意味着我们需要依赖 docblocks,但 PHP 之父 Rasmus Lerdorf 确实提到了在核心中添加静态分析引擎的想法。虽然有很多潜力,但这是一项艰巨的任务。

  说到转译,受到 JavaScript 社区的启发;他们努力在用户世界中扩展 PHP 语法。一个名为 Pre 的项目正是这样做的:它允许将新的 PHP 语法转换成普通的 PHP 代码。

  虽然这个想法已经在 J​​avaScript 世界中得到证明,但它可以在 PHP 中使用适当的 IDE 和静态分析支持。这是一个非常有趣的想法,但它必须被发展才能被称为“主流”。

  结语

  尽管如此,您仍然可以将 PHP 视为一种糟糕的语言。虽然这种语言当然有其缺陷和 20 年的遗产;我可以肯定地说我喜欢使用它。

  根据我的经验,我能够创建可靠、可维护和高质量的软件。与我合作的客户对最终结果感到满意,“我也是”。

  虽然你仍然可以用 PHP 做很多乱七八糟的事情,但我认为如果使用得当且正确,它是 Web 开发的绝佳选择。

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

  通过:

  作者:布伦特 题目:lujun9972 译者:wxy 校对:wxy

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

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线