」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼 PHP 在經典語言的意外捲土重來中越來越受歡迎

為什麼 PHP 在經典語言的意外捲土重來中越來越受歡迎

發佈於2024-11-01
瀏覽:699

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]刪除
最新教學 更多>
  • eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    eval()vs. ast.literal_eval():對於用戶輸入,哪個Python函數更安全?
    稱量()和ast.literal_eval()中的Python Security 在使用用戶輸入時,必須優先確保安全性。強大的Python功能Eval()通常是作為潛在解決方案而出現的,但擔心其潛在風險。 This article delves into the differences betwee...
    程式設計 發佈於2025-04-12
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-04-12
  • 如何在GO編譯器中自定義編譯優化?
    如何在GO編譯器中自定義編譯優化?
    在GO編譯器中自定義編譯優化 GO中的默認編譯過程遵循特定的優化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    程式設計 發佈於2025-04-12
  • 如何有效地選擇熊貓數據框中的列?
    如何有效地選擇熊貓數據框中的列?
    在處理數據操作任務時,在Pandas DataFrames 中選擇列時,選擇特定列的必要條件是必要的。在Pandas中,選擇列的各種選項。 選項1:使用列名 如果已知列索引,請使用ILOC函數選擇它們。請注意,python索引基於零。 df1 = df.iloc [:,0:2]#使用索引0和1 ...
    程式設計 發佈於2025-04-12
  • 解決Python中Mixin類類型提示的循環導入問題
    解決Python中Mixin類類型提示的循環導入問題
    Python Type Hinting without Cyclic ImportsProblem:Importing modules with cyclic dependencies introduces runtime exceptions when type hinting is used i...
    程式設計 發佈於2025-04-12
  • 如何使用組在MySQL中旋轉數據?
    如何使用組在MySQL中旋轉數據?
    在關係數據庫中使用mySQL組使用mySQL組進行查詢結果,在關係數據庫中使用MySQL組,轉移數據的數據是指重新排列的行和列的重排以增強數據可視化。在這裡,我們面對一個共同的挑戰:使用組的組將數據從基於行的基於列的轉換為基於列。 Let's consider the following ...
    程式設計 發佈於2025-04-12
  • 如何在php中使用捲髮發送原始帖子請求?
    如何在php中使用捲髮發送原始帖子請求?
    如何使用php 創建請求來發送原始帖子請求,開始使用curl_init()開始初始化curl session。然後,配置以下選項: curlopt_url:請求 [要發送的原始數據指定內容類型,為原始的帖子請求指定身體的內容類型很重要。在這種情況下,它是文本/平原。要執行此操作,請使用包含以下標頭...
    程式設計 發佈於2025-04-12
  • 找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    找到最大計數時,如何解決mySQL中的“組函數\”錯誤的“無效使用”?
    如何在mySQL中使用mySql 檢索最大計數,您可能會遇到一個問題,您可能會在嘗試使用以下命令:理解錯誤正確找到由名稱列分組的值的最大計數,請使用以下修改後的查詢: 計數(*)為c 來自EMP1 按名稱組 c desc訂購 限制1 查詢說明 select語句提取名稱列和每個名稱...
    程式設計 發佈於2025-04-12
  • Java中`>>`與`>>>`運算符的區別是什麼?
    Java中`>>`與`>>>`運算符的區別是什麼?
    >`and`>>>`java中的運算符? “ />>`and'>>>`java中的操作員? “ />
    程式設計 發佈於2025-04-12
  • PHP網站為何顯示“禁止訪問”錯誤及解決方法
    PHP網站為何顯示“禁止訪問”錯誤及解決方法
    默認索引文件在設置PHP網站時,未加載PHP 在訪問網站的根目錄時遇到錯誤“ Forbidden”時,未加載。當不配置服務器以識別index.php文件為默認索引文件時,通常會發生此問題。 注意:確保將apache配置為允許.htaccess文件。如果不是,請修改Apache的配置文件(htt...
    程式設計 發佈於2025-04-12
  • Java 8類型推斷如何應對比較器鍊式挑戰?
    Java 8類型推斷如何應對比較器鍊式挑戰?
    在Java 8比較器鏈中鍵入挑戰[&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && &&&&&&&& && && && && &&&&&&& && &&&&&&&&&&&&&華JAVA 8的lambda表達式和比較器鏈提供有力的機制來分...
    程式設計 發佈於2025-04-12
  • IE8中Inline-Block顯示為何失效?
    IE8中Inline-Block顯示為何失效?
    如您提到的,IE8支持內聯塊,但它需要在HTML文檔開始時進行適當的Doctype聲明。沒有它,IE8的渲染引擎可能會恢復為怪異模式,從而導致您的CSS行為不同。要解決此問題,請在html標籤之前嘗試在文檔的第一行中添加此行:[&& && && && && &&華型html public pub...
    程式設計 發佈於2025-04-12
  • 為什麼我的CSS背景圖像出現?
    為什麼我的CSS背景圖像出現?
    故障排除:CSS背景圖像未出現 ,您的背景圖像儘管遵循教程說明,但您的背景圖像仍未加載。圖像和样式表位於相同的目錄中,但背景仍然是空白的白色帆布。 而不是不棄用的,您已經使用了CSS樣式: bockent {背景:封閉圖像文件名:背景圖:url(nickcage.jpg); 如果您的html,cs...
    程式設計 發佈於2025-04-12
  • 如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    如何解決由於Android的內容安全策略而拒絕加載腳本... \”錯誤?
    Unveiling the Mystery: Content Security Policy Directive ErrorsEncountering the enigmatic error "Refused to load the script..." when deployi...
    程式設計 發佈於2025-04-12
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式接口中實現垂直滾動元素的CSS高度限制問題:考慮一個佈局,其中我們具有與用戶垂直滾動一起移動的可滾動地圖div,同時與固定的固定sidebar保持一致。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 映射{} 因此。我們不使用jQuery的“ .aimimate...
    程式設計 發佈於2025-04-12

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3