”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么 PHP 在经典语言的意外卷土重来中越来越受欢迎

为什么 PHP 在经典语言的意外卷土重来中越来越受欢迎

发布于2024-11-01
浏览:946

PHP 二十多年来一直是 Web 开发的基石,为数以百万计的网站和 Web 应用程序提供支持,其中包括 Facebook 和 Wikipedia 等巨头。有一段时间,PHP 遇到了一些声誉问题,许多开发人员和技术专家预测它会衰落,取而代之的是 JavaScript(带有 Node.js)、Python 或 Ruby 等较新的语言。然而,到了 2024 年,PHP 不仅还活着,而且再次蓬勃发展。

那么发生了什么?为什么 PHP 越来越受欢迎,尤其是在很多人准备放弃它的时候?在本文中,我们将探讨 PHP 卷土重来的一些关键原因,以及如果您是希望构建强大的 Web 应用程序的开发人员或企业,为什么您可能想要重新审视它。

1. 现代 PHP 快速高效

PHP 过去名声不佳的主要原因之一是它的性能问题。然而,自 2015 年 PHP 7 发布以及 PHP 8 及更高版本的后续改进以来,该语言的性能得到了巨大的增强。这些更新大大减少了内存使用量和执行时间,使 PHP 成为可用于 Web 开发的最快脚本语言之一。

事实上,基准测试显示 PHP 8.2(于 2023 年 12 月发布)几乎比 PHP 5.x 快三倍,而 PHP 5.x 在几年前还是常态。性能的改进,加上 PHP 的低入门门槛和广泛的托管可用性,使其成为构建高流量应用程序的绝佳选择,而无需花费大量服务器成本。

2. PHP 8 功能正在改变游戏规则

PHP 8 和 8.1 引入了新的现代功能,使该语言更加健壮、安全且易于使用。一些主要功能包括:

  • JIT(即时)编译:JIT 通过在运行时将 PHP 代码编译为机器代码来优化 PHP 代码的执行,从而大大提高某些任务的性能。

  • 联合类型和命名参数:这些新的类型功能使 PHP 代码更加可预测和可维护,缩小了与 Java 或 C# 等更强类型语言的差距。

  • 属性(注释):这些允许开发人员向他们的类和方法添加元数据,这使得 Symfony 和 Laravel 等框架更加强大且直观易用。

这些现代功能使 PHP 感觉更像是满足当今 Web 开发需求的一流语言,使其与新技术保持相关性和竞争力。

3. Laravel 持续占据主导地位

近年来 PHP 最大的优势之一是它的生态系统,没有任何框架比 Laravel 对 PHP 的现代相关性做出了更多的贡献。 Laravel 是最流行的 PHP 框架,它通过提供以下功能使 PHP 开发变得更快、更轻松、更愉快:

  • 干净优雅的语法

  • 用于路由、身份验证和数据库管理的集成工具

  • 用于扩展功能的广泛软件包库

  • 一个充满活力、活跃的社区,不断突破 PHP 的界限

Laravel 的影响力如此之大,以至于许多本来可能避免使用 PHP 的开发人员由于该框架的生产力优势而接受了它。随着每个新版本的出现,Laravel 都不断吸引着新手和经验丰富的开发人员。

4. PHP 生态系统正在不断发展

除了 Laravel,更广泛的 PHP 生态系统仍然活跃并不断发展。 Composer 是 PHP 的包管理器,已成为现代 PHP 开发的核​​心部分,提供对数千个库和工具的访问。随着高质量开源包的数量不断增加,PHP 开发人员在构建应用程序时拥有了一个充满活力的生态系统可供借鉴。

此外,RoadRunner(高性能 PHP 应用程序服务器)和 PHP-FPM 等新工具重新定义了我们部署和运行 PHP 应用程序的方式,使其更接近速度以及 Go 或 Node.js 等语言的可扩展性。

5. 广泛的托管支持和轻松部署

PHP 复兴的最大原因之一是它在托管和部署方面的简单性。世界上几乎每个网络主机都支持开箱即用的 PHP,并且由于其广泛使用,它是托管最便宜的语言之一。

随着云原生应用程序和平台(例如 AWS、Google Cloud 和 DigitalOcean)的兴起,提供易于设置的 LAMP 堆栈(Linux、Apache、MySQL、PHP),开发人员可以部署 PHP 应用程序快速且低成本。这使得 PHP 对于想要以最少的麻烦创建网站或应用程序的初创公司、小型企业和自由职业者特别有吸引力。

6. PHP 仍然是 Web 的支柱

我们不要忘记,根据 W3Techs 的说法,79% 的网络 仍然在 PHP 上运行。虽然较新的语言确实已经普及,但 PHP 仍然是世界上许多最大和访问量最大的网站的首选。凭借如此庞大的安装基础,企业和开发人员继续投资 PHP,因为它熟悉、可靠,并且得到广大开发人员社区的支持。

此外,WordPress、Joomla 和 Drupal 等流行的内容管理系统(支持全球超过三分之一的网站)都是基于 PHP 构建的。这确保了 PHP 继续在数字领域占据重要地位。

7. 向后兼容性和开发人员熟悉程度

对于许多经验丰富的开发人员来说,PHP 是众所周知的。它已经存在很长时间了,大多数 Web 开发人员至少都有一些使用它的经验。与更具实验性或快速变化的语言不同,PHP 保持了出色的向后兼容性,这意味着现有的 PHP 应用程序可以更新或扩展,而无需重写大量代码。

这对于拥有需要持续支持和更新的大型遗留系统的企业来说尤其重要。 PHP 的长寿和向后兼容性使其成为维护旧系统的安全选择,同时还可以使用最新的语言功能对其进行现代化改造。

重生的语言

到 2024 年,PHP 还远未过时。凭借显着的性能改进、现代化的功能、Laravel 等充满活力的框架以及庞大的生态系统,PHP 再次成为开发人员的首选。近年来,它可能被流行的语言所掩盖,但它的可靠性、速度和广泛的托管选项使其成为构建从小型网站到大型 Web 应用程序的实用解决方案。

如果您过去已经放弃了 PHP,那么现在可能是重新考虑它的时候了。凭借其现代化的功能和不断发展的开发者社区,PHP 正在证明它会继续存在 — 也许比以往任何时候都更强大。


如果您喜欢这篇文章并想表达您的支持,您可以通过给我买杯咖啡来轻松实现。非常感谢您的贡献!

Why PHP is Gaining Popularity in The Unexpected Comeback of a Classic Language

版本声明 本文转载于:https://dev.to/jenueldev/why-php-is-gaining-popularity-in-2024-the-unexpected-comeback-of-a-classic-language-1pa?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 了解异步 JavaScript
    了解异步 JavaScript
    JavaScript 是一种单线程语言,这意味着它一次只能做一件事。然而,Web 应用程序通常需要执行从服务器获取数据等任务,这可能需要一些时间。如果 JavaScript 必须等待每个任务完成才能继续,那么您的 Web 应用程序将会变得缓慢且无响应。这就是异步(async)JavaScript发挥...
    编程 发布于2024-11-07
  • 您应该避免的错误(以及如何修复它们)
    您应该避免的错误(以及如何修复它们)
    作为一名 React 开发人员,很容易陷入某些编码模式,这些模式一开始看起来很方便,但最终可能会导致问题。在这篇博文中,我们将探讨 5 个常见的 React 错误,并讨论如何避免它们,确保您的代码保持高效、可维护和可扩展。 1. 滥用关键道具 错误: {myList.map((ite...
    编程 发布于2024-11-07
  • 如何在 PHP 中访问 JavaScript 变量值?
    如何在 PHP 中访问 JavaScript 变量值?
    在 PHP 中使用 JavaScript 变量值使用同时涉及 JavaScript 和 PHP 的 Web 应用程序时,通常需要在两者之间交换数据两种语言。然而,由于语言的执行环境不同,直接在 PHP 中访问 JavaScript 变量是不可能的。PHP 在服务器端执行,而 JavaScript 在...
    编程 发布于2024-11-07
  • Popver API VS 对话框模态:相同但不同
    Popver API VS 对话框模态:相同但不同
    我在阅读一些科技新闻博客时偶然发现标题 Popover API 登陆 Baseline。我很困惑,在我最近深入前端开发期间,我最近很难习惯在 HTML 中使用 Elements。在浏览博客时,我一直对到目前为止我如何使用该元素感到困惑。 长话短说 选择: 需要用户焦点的模态弹出窗口...
    编程 发布于2024-11-07
  • Go中不嵌入结构体可以实现方法继承吗?
    Go中不嵌入结构体可以实现方法继承吗?
    嵌入式结构:方法继承的探索理解 Go 中的方法继承In在 Go 中,将方法从一种类型继承到另一种类型的能力主要是通过嵌入结构来实现的。此技术涉及将一个结构嵌入另一个结构,允许外部结构访问和利用嵌入结构的方法。嵌入结构的示例考虑以下内容代码片段:type Properties map[string]i...
    编程 发布于2024-11-07
  • 如何在 PHP 中的 Foreach 循环中检索数组键
    如何在 PHP 中的 Foreach 循环中检索数组键
    在 Foreach 循环期间检索数组键:PHP在 PHP 中使用数组时,通常需要检索其中的键和值foreach 循环。 key() 函数提供了一种在迭代期间访问当前键的便捷方法。但是,在某些情况下,它可能不会产生所需的结果。考虑以下代码,其目的是从示例数组生成 HTML 表:foreach($sam...
    编程 发布于2024-11-07
  • 在 JavaScript 中创建对象的方法
    在 JavaScript 中创建对象的方法
    介绍 在 JavaScript 中创建对象的方法有很多种。 对象字面量 Object() 构造函数 Object.create() 构造函数 ES6 类 对象字面量 这可能是在 JavaScript 中创建对象最快、最简单的方法。这也称为对象初始值设定项,是一个由零...
    编程 发布于2024-11-07
  • 如何在 JavaScript 中扩展自定义异常的错误对象?
    如何在 JavaScript 中扩展自定义异常的错误对象?
    扩展 JavaScript 中的错误对象在 JavaScript 中抛出异常时,可能希望扩展内置 Error 对象以创建自定义错误类型。这允许更具体和信息丰富的异常处理。在 JavaScript 中,继承不是通过子类化与 Python 不同,在 Python 中,异常通常是从 Exception 基...
    编程 发布于2024-11-07
  • MySQL如何保证并发操作时数据的完整性?
    MySQL如何保证并发操作时数据的完整性?
    MySQL 并发:确保数据完整性如果您的 MySQL 数据库使用 InnoDB 存储引擎,您可能会担心在执行过程中潜在的并发问题。同时记录更新或插入。本文探讨了 MySQL 如何处理并发以及是否需要在应用程序中加入额外的处理。MySQL 的并发处理MySQL 采用原子性,这意味着单独的 SQL 语句...
    编程 发布于2024-11-07
  • 如何使用 Go 在 SQL 查询中有效连接字符串和值?
    如何使用 Go 在 SQL 查询中有效连接字符串和值?
    在 Go 中有效地制作 SQL 查询在 Go 中将字符串与文本 SQL 查询中的值连接起来可能有点棘手。与 Python 不同,Go 的字符串格式化语法行为不同,导致常见错误,如此处遇到的错误。元组语法错误初始代码片段尝试使用 Python -style 元组,Go 中不支持。这会导致语法错误:qu...
    编程 发布于2024-11-07
  • 为什么 json_encode() 无法使用 Latin1 编码对 MySQL 数据库中的重音字符进行编码?
    为什么 json_encode() 无法使用 Latin1 编码对 MySQL 数据库中的重音字符进行编码?
    MySQL 中 UTF-8 字符的 JSON 编码难题当尝试使用 latin1_swedish_ci 编码从数据库中检索重音字符并使用 json_encode() 将它们编码为 JSON 时,结果可能出乎意料。预期结果(例如“Abord â Plouffe”)会转换为“null”,从而使编码的 JS...
    编程 发布于2024-11-07
  • 如何在 MySQL 中将行转置为列:综合指南
    如何在 MySQL 中将行转置为列:综合指南
    在 MySQL 中将行转换为列在 MySQL 查询中将行转换为列需要在应用程序中执行复杂的查询或手动操作。GROUP_CONCAT 解决方案虽然 GROUP_CONCAT 可以将行转换为单列,但它不提供整个结果集所需的转置。手动查询方法对于更复杂的转置,需要细致的查询,从原始行手动构造每一列。复杂查...
    编程 发布于2024-11-07
  • 如何解决iOS后台模式下未收到GCM通知的问题
    如何解决iOS后台模式下未收到GCM通知的问题
    当应用程序在 iOS 上处于后台模式时未收到 GCM 通知当 iOS 在后台收到通知但不处理时,会出现此问题它们在用户界面中。要解决此问题,请确保您的应用:启用后台推送通知:检查您的应用是否已请求并获得在后台接收推送通知的权限。设置徽章应用程序图标:验证是否在应用程序的“设置”>“通知”部分中选择了...
    编程 发布于2024-11-07
  • 为什么在 Windows 7 中使用 CLASSPATH 时出现 ClassNotFoundException?
    为什么在 Windows 7 中使用 CLASSPATH 时出现 ClassNotFoundException?
    尽管使用 CLASSPATH 环境变量仍解决 java.lang.ClassNotFoundException在 Windows 7 中尝试使用 Java 连接到 MySQL 数据库时,设置 CLASSPATH 环境变量以包含 JDBC 驱动程序 jar 文件的路径似乎无法解决 java.lang....
    编程 发布于2024-11-07
  • 开发人员需要了解免费外汇 API
    开发人员需要了解免费外汇 API
    如果您是一名开发人员,您一定正在寻找可以帮助您更轻松地工作的工具,对吗?免费的外汇 API 就是其中之一!它使您无需支付任何费用即可获取外汇汇率。但是,许多开发人员对这些 API 不太了解。因此,本文旨在解释什么是免费外汇 API、它为何有用以及如何为您的项目选择一个 API。 什么是免费外汇 A...
    编程 发布于2024-11-07

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3