當下最受歡迎的前十個PHP框架

PHP框架

說到網路開發,除了 HTML、CSS 和 JavaScript 之外,PHP 語言也是大家會想到的語言之一。

與流行的觀點相反,PHP 並沒有死。包括 Facebook 和維基百科等大型網站仍在廣泛使用 PHP。

根據 W3Techs 的資料,大約 79% 的網站使用 PHP。在伺服器端程式語言中,它比最接近的競爭對手 ASP.NET 流行八倍。

去年,PHP 的使用份額保持穩定。

PHP近一年的市場佔有率

PHP近一年的市場佔有率

一般情況下,PHP程式設計師經常會藉助PHP框架來編寫程式碼,而不是從零開始。那麼什麼是PHP框架,為什麼要使用它們,及與大家分享一些最受歡迎的PHP框架。

什麼是PHP框架?

PHP框架是用於建立PHP型別的Web應用程式的平臺。PHP框架提供了常用功能的程式碼庫,從而減少了開發人員需要編寫的原始程式碼量。

為何使用PHP框架?

與從零開始編寫程式碼相比,使用PHP框架有很多充分的理由。

1.更快的開發效率

由於PHP框架提供內建的庫和工具,因此開發所需的時間更少。

例如,CakePHP框架提供Bake命令列工具,該工具可以快速建立應用程式中所需的任何框架程式碼。幾個流行的PHP框架整合了PHPUnit庫,以便於測試。

2.減少編寫程式碼量

使用框架內建的功能意味著您不需要編寫太多原始程式碼。

3.常見任務庫

開發人員在Web應用程式中需要執行的許多工是常見的。示例包括表單驗證,資料清理和CRUD操作(建立,讀取,更新和刪除)。您不必為這些任務編寫函式,而是直接使用框架中的提供的函式即可。

4.遵循良好的編碼習慣

PHP框架通常遵循最佳編碼實踐。例如,它們根據功能將程式碼整齊地劃分為多個目錄。

Symfony預設目錄結構

Symfony預設目錄結構

有了這樣的標準規範,程式設計師自然而然以更簡潔,更整齊且更易於維護的方式組織管理程式碼。

框架還明確了程式設計師應遵循的針對實體的命名約定。

5.漏洞更少程式碼更加安全

有許多PHP安全威脅,包括跨站點指令碼編寫,SQL隱碼攻擊和跨站點偽造請求。除非參與程式碼編寫的所有人員都能夠採取正確的步驟來保護程式碼,否則使用PHP編寫的Web應用程式將很容易受到攻擊。

使用PHP框架不是說100%的安全,但可以最大程度地減少黑客利用的機會。畢竟優秀的PHP框架提供內建的資料清理功能,並且及時得到良好的維護,可以防禦上述常見威脅。

6.便於技術團隊合作

如果不明確,存在多個開發人員的專案可能會在以下要點出錯:

  • 文獻資料
  • 設計決策
  • 規範標準

使用框架可以為專案設立明確的基本規則。即使其他開發人員不熟悉該框架,他們也應該能夠快速學習並進行協作。

7.易於維護

PHP框架鼓勵程式碼重構並提倡DRY(Don’t Repeat Yourself))開發。產生的精簡程式碼庫需要較少的維護。

您也不必擔心維護核心框架,參與框架維護的開發人員已為您完成了這一工作。

使用PHP框架前的準備

使用PHP框架之前,您需要了解的第一件事就是PHP本身!如果您對該語言本身就不清楚,那麼將很難選擇哪一個框架。大多數框架都在PHP 7.2或更高版本上執行。

如果您是PHP語言的初學者,可以參考以下網站深入瞭解:

接下來,您應該已經構建了一些自己的PHP應用程式,因此您要前端和後端的要求有較清晰的瞭解。

PHP物件導向程式設計-大多數PHP框架都是物件導向的。確保您瞭解類,物件,繼承,方法,特徵和訪問控制修飾符之類的概念。

資料庫與SQL語法-由於許多Web應用程式都連線到資料庫,您還應該對資料庫和SQL語法進一步熟悉瞭解。每個PHP框架都有其自己的受支援資料庫列表。

物件關係對映(ORM)模型-ORM是一種使用物件導向的語法而不是使用SQL訪問資料庫資料的方法。這意味著您可以使用熟悉的PHP編寫資料庫查詢,儘管有時可能要使用SQL。

許多PHP框架都有自己的內建ORM。例如,Laravel使用Eloquent的ORM。其他框架則使用開源ORM,如Doctrine

網路伺服器的工作方式-瞭解Apache和Nginx等網路伺服器的工作方式將很有幫助。因為開發人員可能需要在伺服器上配置檔案,以使應用程式獲得最佳執行。

本地環境搭建-可能會在本地進行開發測試,因此對localhost也要有一定的瞭解。又或者使用Vagrant和VirtualBox搭建虛擬環境,建立和測試Web應用程式。(相關文章閱讀:2020年最新版本WordPress本地環境搭建與安裝教程

模型-檢視-控制器架構

PHP框架通常遵循模型-檢視-控制器(MVC)設計模式。該概念將資料的處理與其表達分開。

模型-檢視-控制器邏輯流程

模型-檢視-控制器邏輯流程(圖片來源:Wikimedia Commons

模型(Model )儲存業務邏輯和應用程式資料。它將資料傳遞到檢視(View),表示層。使用者(USER)與檢視進行互動並且可以通過控制器(Controller)輸入指令。控制器將這些命令傳遞給模型,然後迴圈繼續進行。

簡而言之,模型與資料有關,檢視與外觀有關,而控制器與行為有關。

關於MVC模式的一個貼切比喻是在酒吧點一杯雞尾酒。

使用者是需要到達酒吧(檢視)的顧客。使用者將他們的飲料訂單交給調酒師(控制器)。

調酒師根據配方,配料和裝置(模型)製作訂單需求。根據雞尾酒的不同,他們可能會使用以下任何一種或其他物品:

  • 果汁
  • 檸檬
  • 玻璃
  • 雞尾酒搖杯
  • 橄欖
  • 攪拌器

雞尾酒成品放在酒吧上供User享用。如果User想要再喝一杯,他們必須首先與Controller交談。他們不允許進入Model並自己調製飲料。

用PHP應用程式術語,MVC可以對應以下內容:

  • 模型:資料庫
  • 檢視:一個或多個HTML頁面
  • 控制器:用於訪問和更新資料庫的功能

使用PHP框架時,習慣使用命令列介面(CLI)會有所幫助。Laravel有自己的CLI,Artisan Console。使用Artisan中的make命令,您可以為專案快速構建模型,控制器和其他元件。

熟悉命令列也是使用Composer的PHP包管理器的關鍵。Yii框架則使用Composer來安裝和管理依賴項(即應用程式執行所必需的包)。

Packagist是可以與Composer一起安裝的主要儲存庫包。一些受歡迎的Composer包經常會跟Symfony框架聯合一起執行。

Packagist熱門Packages包

Packagist熱門Packages包

如何選擇PHP框架?

在為專案選擇最佳的PHP框架時,需要考慮以下因素。

首先,如果您不熟悉PHP框架,建議選擇學習曲線不太陡峭的框架。尤其是框架如果太難掌握,您又不想花費寶貴的時間來學習。

然後,您需要一個易於使用並節省時間的框架。

PHP框架應滿足您對專案的技術要求。大多數框架都會最低的PHP版本要求和可以使用的某些PHP擴充套件。確保選擇的框架支援您希望使用的資料庫,並且可以將該框架與要部署到的Web伺服器一起使用。

選擇具有適當功能平衡的框架。功能豐富的框架適用於某些比較複雜的專案。如果不需要太多功能,則選擇精簡實用的框架。

框架必要的一些功能是:

  • 測試
  • 快取儲存
  • 模板引擎:使用PHP類在HTML中輸出PHP的方法
  • 安全

如果您需要構建可擴充套件的應用程式,請選擇一個支援此功能的框架。

最後,PHP框架擁有良好的文件和支援很重要,如果網上可參考學習資料少之又少,建議不要採用此框架。存在活躍的社羣的框架更有可能經受住時間的考驗,並且在遇到困難時也能夠為您提供幫助,活躍的社羣證明該框架得到大量的技術人員支援。

最流行的PHP框架

要列出 PHP 框架的確切清單很困難。維基百科列出了 40 個 PHP 框架,但其中一些更適合描述為內容管理系統,無疑還有更多。

早期的 PHP 框架包括 PHPlib、Horde 和 Pear。現在大多數知名的 PHP 框架都是在 2005 年或之後推出的。

下面是目前使用的一些最好的 PHP 框架。

1. Laravel

laravel

Laravel

Laravel被稱為“ Web工匠的PHP框架”,由Taylor Otwell開發的,該框架包含CodeIgniter所沒有的元素,例如使用者身份驗證。

配置指南

始於:2011年6月

當前版本:v8,釋出於2020年9月8日。

技術要求:

  • PHP> = 7.2.5(或使用Laravel Homestead)
  • 已安裝Composer
  • 資料庫支援MySQL 5.6 +,PostgreSQL 9.4 +,SQLite 3.8.8 +,SQL Server 2017+。

Laravel的優點

Laravel Homestead很容易上手,一個為您量身定製的虛擬開發環境。

Laravel Homestead是一個官方預先封裝好的Vagrant box,為開發人員提供一個絕佳的開發環境,而無需開發人員在本地計算機上安裝PHP,Web伺服器和任何其他伺服器軟體。無需擔心搞砸您的作業系統!

如果是Mac使用者,還可以選擇使用Laravel Valet作為開發環境。順便提一下,Laravel Valet支援Symfony,CakePHP 3,Slim和Zend以及WordPress。

Laravel使用名為Blade的模板引擎。與其他模板引擎相比,它具體的一個優點是可以在Blade中使用PHP,而其他則無法做到。

Packalyst是Laravel包的集合,其中包含超過15,000個可以在專案中使用的包。

Laravel提供了一系列安全功能和方法,包括:

  • Authentication(認證方式)
  • Authorization(授權)
  • Email verification(電子郵件驗證)
  • Encryption(加密)
  • Hashing(雜湊法)
  • Password reset(重設密碼)

Laravel的Eloquent ORMFluent Query Builder使用PDO引數繫結來防範SQL隱碼攻擊。預設情況下,也會啟用使用隱藏的CSRF表單令牌的跨站點請求偽造(CSRF)保護。

Laravel使用的Artisan Console命令列工具通過允許開發人員自動執行重複任務並快速生成框架程式碼來加快開發速度。

當進行PHP基準測試時,Laravel是目前嘗試過的最快的PHP框架。

Laravel生態系統提供了不少有用的工具,例如用於編譯CSS和JS的Mix和用於OAuth身份驗證的Socialite

Laravel受益於龐大的開發人員社羣:

  1. Laracasts:一個包含課程,部落格,播客和論壇的學習門戶。
  2. Laravel.io:一個擁有超過45,000個使用者的社羣門戶。
  3. Laravel subreddit:50,000名Laravel工匠的家。

哪些企業/專案在用Laravel?

2. Symfony

symfony

Symfony

Symfony既是一個PHP框架,又是用於搭建網站的PHP元件集合。

配置指南

始於:2005年10月

當前版本:5.1.4

技術要求:

  • PHP> = 7.2.5
  • 已安裝Composer

Symfony的優點

對於需要可擴充套件的網站和應用程式,Symfony是一個絕佳的選擇。它的模組化元件系統非常靈活,可以讓您選擇專案所需的元件。

Symfony支援主流PHP框架中的大多數資料庫

  • Drizzle
  • MySQL
  • 甲骨文
  • PostgreSQL
  • SAP Sybase SQL Anywhere
  • SQLite
  • SQLServer

與資料庫互動的最佳方法是通過Doctrine ORM。Symfony使用資料對映器將物件對映到資料庫。這使物件模型和資料庫架構保持分離,這意味著如果更改資料庫列,則無需在程式碼庫中進行逐一更改。

使用內建工具欄,除錯Symfony專案非常簡單。

Symfony使用Twig模板引擎,該引擎易於學習,快速且安全。

Packagist列出了4,000多個Symfony包供技術人員下載和使用。

Symfony還得到了Sensio Labs的商業支援。這意味著可以提供專業支援,這與大多數其他PHP框架不同。它還提供3年更新維護的長期支援版本。

Symfony開發人員可以通過多種渠道獲得培訓和幫助:

此外,Symfony社羣也非常龐大,至少有60萬開發人員參與。

哪些企業/專案在用Symfony?

還有一些知名公司在他們的專案中使用Symfony元件,包括Drupal, Joomla和Magento。

3. CodeIgniter

codeigniter

CodeIgniter

CodeIgniter框架僅需簡單的配置,即可幫助技術人員快速構建Web應用程式。

配置指南

始於:2006年2月

當前版本:4.0.3

技術要求:

  • PHP> = 7.2
  • 支援MySQL,PostgreSQL,SQLite3資料庫

CodeIgniter的優點

CodeIgniter以速度聞名,在我們的PHP基準測試中速度位列第二位(僅供參考)。

該框架的佔用空間小(下載體積僅1.2MB),技術人員可以按需新增其他的元件。

CodeIgniter非常靈活:鼓勵使用MVC架構進行開發,但也可以編寫非MVC應用程式的程式碼。

該框架包括針對CSRF和XSS攻擊的防禦措施,以及上下文相關的轉義和內容安全策略。

CodeIgniter支援多種快取方法,可加快應用程式速度。

如前所述,與其他框架相比,CodeIgniter具有易於學習的曲線,並且擁有很好的可擴充套件性。

CodeIgniter的社羣包括官方論壇Slack討論組

哪些企業/專案在用CodeIgniter?

4. Zend Framework / Laminas Project

zend

Zend 框架

Zend框架是一個歷史悠久的PHP框架,不過現在已經過渡到Laminas Project。如果你還在用Zend框架開發專案,強烈建議遷移到Laminas Project,因為Zend不再更新。

Laminas Project包含3個部分:

  1. Laminas元件和MVC
  2. Mezzio
  3. Laminas API工具

配置指南

始於:2006年3月

當前版本:3.0.0(Zend)或1.3.0(Laminas)

技術要求:

  • PHP> = 5.6(Zend)或> = 7.3(Laminas)
  • 已安裝Composer
  • 支援MariaDB,MySQL,Oracle,IBM DB2,Microsoft SQL Server,PostgreSQL,SQLite和Informix Dynamic Server資料庫。

Zend / Laminas的優點

Zend框架的安裝量已超過5.7億,它也是企業最常用的PHP框架。

Zend遵循PHP-FIG標準,也就是說其程式碼可以輕鬆移植到其他框架。

與Symfony一樣,技術人員可以僅使用所需的元件。

您可以使用Zend構建RESTful API。

Laminas社羣包括官方論壇Slack討論組,以提供協作和支援。

哪些企業/專案在用Zend/Laminas?

在Zend官方主頁可以瞭解到,很多大型公司都在使用Zend框架,包括

5. Yii (Framework)

yii-framework

Yii Framework

這個框架名稱Yii,中文的意思是“易”,也代表“Yes, It Is!”

配置指南

始於:2008年12月

當前版本:2.0.35

技術要求:

  • PHP> = 5.4.0,建議7+
  • 已安裝Composer
  • 支援SQLite,MySQL,PostgreSQL,MSSQL或Oracle資料庫

Yii的優點

您可以在數分鐘內使用Yii並開始執行。Yii框架官方文件寫得很好並且易於理解和遵循。

Yii Framework具有多種安全措施,例如Hash演算法密碼,加密,身份驗證和授權。該文件提供了防止SQL隱碼攻擊,XSS和CSRF攻擊的最佳實踐。

GII程式碼生成器可以幫助技術人員快速構建框架程式碼,大大節省更多的時間。

Gii-code-generator-e1599232207871

Gii code generator

Yii支援四種型別的快取以加速Web應用程式:資料快取,片段快取,頁面快取和HTTP快取。

並且支援在Yii專案中執行第三方程式碼

Yii社羣通過Slack或IRC提供討論支援,你也可以通過論壇和社交媒體渠道支援。社羣會通過徽章和進入名人堂的方式獎勵活躍的成員。

哪些企業/專案在用Yii?

6. CakePHP

CakePHP

CakePHP

CakePHP提供了快速,簡約的PHP開發解決方案。

配置指南

始於:2005年4月

當前版本:4.1.1

技術要求:

  • PHP 7.2(最低),7.4推薦
  • 首選使用mod_rewrite的HTTP伺服器
  • 資料庫支援MySQL 5.6 +,MariaDB 5.6 +,PostgreSQL 9.4 +,SQLite 3.8,SQL Server 2012+。

CakePHP的優點

配置極少。您不必倒騰XML或YAML檔案。建立資料庫後,即可開始編碼了。

CakePHP內建ORM,使用起來簡單快捷。

安全功能包括加密,雜湊密碼,表單資料保護和CSRF保護等。

CakePHP的元件和助手簡化了開發並減少了技術人員必須執行任務數量。

Github整理提供了一個非常有用的CakePHP資源和外掛列表

技術人員可以通過cookbook(文件),線上培訓和CakeFest會議來學習CakePHP。

還可以通過論壇,Stack Overflow,IRC和Slack找到友好的CakePHP技術人員。也可以從CakePHP創始人Larry Masters執行的Cake DC中獲得專業支援。

哪些企業/專案在用CakePHP?

7. Slim

Slim框架

Slim框架

Slim是由Josh Lockhart建立的精簡,敏捷的微型PHP框架,該框架著重於接收HTTP請求,呼叫回撥並返回HTTP響應。

配置指南

始於:2010年9月

當前版本:4.5.0

技術要求:

  • PHP 7.2以上
  • 支援URL重寫的Web伺服器

Slim框架的優點

Slim的程式碼庫是極其精簡,因為沒有第三方依賴性,追求極致效能。

Slim特別適合構建小型應用程式和API。如果需要從框架中獲取更多支援,Slim整合了第一方和第三方元件整合。

Slim框架易於學習和理解,只需幾分鐘即可執行一個“ Hello World”應用程式。

在Slant網站,Slim被開發人員評為最佳PHP框架(稱號這東西僅適合參考)。

最佳PHP框架

誰才是最佳PHP框架?

通過Tidelift可獲得專業的Slim技術支援。

哪些企業/專案在用Slim?

8. Phalcon

phalcon

Phalcon

Phalcon是一個為提高速度而構建的PHP框架,使用Zephir和C語言編寫的Web伺服器擴充套件。但開發人員不需要C的知識,而是使用框架生成的PHP類和名稱空間。

配置指南

始於:2012年11月

當前版本:4.0.6

技術要求:

  • PSR擴充套件
  • PHP 7.2 +(建議最新版本)

Phalcon的優點

Phalcon被設計為可快速執行,具有以下功能:

  • 低層級架構。
  • 一次性載入Zephir,C擴充套件和PHP。
  • 程式碼通過編譯而不是解釋的,速度更快。
  • 常駐記憶體,這意味著可以在需要時呼叫。
  • 與大多數其他PHP框架不同,它不使用檔案讀取和檔案統計資訊,從而提高了效能。

由於Phalcon是鬆散耦合的,因此開發人員可以建立自己的目錄結構。Phalcon的程式碼不存在於專案目錄中,so程式碼輕巧。

Phalcon的安全元件有助於雜湊密碼和CSRF保護。

Phalcon的模板引擎Volt非常快,並帶有幫助程式類,可輕鬆建立檢視。

您可以通過Phalcon的文件論壇Discord聊天Stack Overflow和多個社交媒體平臺尋求幫助支援。

哪些企業/專案在用Phalcon?

根據Phalcon BuiltWith網站資訊,以下專案使用Phalcon:

9. FuelPHP

FuelPHP

FuelPHP

FuelPHP是一個社羣驅動的PHP框架,在其生命週期內有300多個貢獻者。

配置指南

始於:2011年6月

當前版本:1.8.2

技術要求:

  • PHP 5.4以上
  • 任何網路伺服器

FuelPHP的優點

FuelPHP使用MVC,但也支援HMVC(分層模型檢視控制器)。這將在Controller和View之間新增另一層。HMVC設計模式的優點是:

  • 更好的程式碼組織
  • 高度模組化
  • 高度可擴充套件
  • 提倡程式碼重用

您可以選擇專案所需的檔案和資料夾結構,因為幾乎沒有限制。FuelPHP具有以下功能,非常重視安全性

  • 輸出編碼
  • CSRF保護
  • 輸入,URI和XSS過濾
  • 轉義使用者輸入傳遞給SQL語句

FuelPHP使用自己的命令列工具-oil,技術人員可以用它來執行任務,除錯程式碼,及生成常用的元件。

FuelPHP ORM強大而輕巧。

可通過官方論壇以及社交媒體Facebook和Twitter上加入FuelPHP社羣。

哪些企業/專案在用FuelPHP?

10. Fat-Free Framework

Fat-Free-Framework

Fat-Free Framework

像Slim一樣,Fat-Free Framework(F3)是一個微型框架,該框架旨在在有用的功能之間的平衡性,簡單易用又追求效能速度。

配置指南
始於:2009年

當前版本:3.7.2

技術要求:

  • PHP 5.4以上
  • 任何網路伺服器
  • 支援MySQL,SQLite,MSSQL / Sybase,PostgreSQL和MongoDB資料庫。

Fat-Free Framework的優點

程式碼庫體積約為65Kb,速度很快。麻雀雖小,五臟俱全,F3仍然擁有您所期望的大部分功能,並且可以使用可選外掛擴充套件它。

Fat-Free Framework極其易上手,無需使用Composer,curl或依賴項注入器即可入門。使用它可以在幾分鐘內建立一個Hello World應用程式。

幾乎所有框架都是模組化的,因此您只需要使用構建Web應用程式所需的部分即可。預設情況下,F3不會新增不需要的程式碼,以使應用程式保持最小化。

F3提供的文件清晰易懂,並帶有大量示例。Fat-Free Framework提供了多種模板引擎供您選擇:可以使用PHP,F3自己的模板引擎或其他諸如Smarty或Twig的模板引擎。

F3開發人員一般通過SlackFat-Free Framework Google Group進行技術討論。

哪些企業/專案在用Fat-Free Framework?

最適合初學者的PHP框架

對於初學者來說,最好的PHP框架應該是簡單易學,極簡至上的框架。掌握了其中一種功能後,如果需要的話,就可以升級到功能更豐富的功能之一。

Yii應該是初學者PHP框架入門的最佳選擇。Yii的文件將引導您製作一個應用程式以檢視國家/地區,向您介紹MVC模式以及在此過程中如何使用資料庫。

使用Yii 開發的國家Web簡易程式

使用Yii 開發的國家Web簡易程式

如果程式碼存在錯誤,這些錯誤將顯而易見,從而幫助技術人員除錯並快速修復改進。

未定義變數的Yii錯誤

未定義變數的Yii錯誤

Slim框架易於安裝。Slim有一個針對框架版本3的第一個應用教程。不幸的是,它尚未更新為Slim版本4(當前版本)。

通過Composer安裝Slim 4

通過Composer安裝Slim 4

對於Fat-Free Framework,可以選擇通過Composer安裝,也可以下載或解壓zip檔案。該框架是通過一個簡單的“ Hello,world”程式建立的。

使用者指南從路由到單元測試,逐步指導您瞭解所有需要了解的知識。還有一個CMS演示,幫助您可以瞭解所有元件如何結合在一起。

CodeIgniter的設定也很簡單,也有完整的文件可參考。他們的“第一個應用程式”教程使用帶有新聞報道的CRUD功能構建了一個簡單的CMS。

CodeIgniter新聞存檔頁面

CodeIgniter新聞存檔頁面

小結

如果你想減少開發 PHP 網路應用程式的時間,使用框架是一個明智的選擇。

要充分利用 PHP 框架並避免出現挫折,請確保您掌握了一定的 PHP 知識,並理解框架背後的基本概念: MVC 架構、物件導向語法、資料庫和 ORM 以及命令列。

選擇哪種框架取決於您要構建的應用程式型別。有適合各種口味的 PHP 框架,從極簡到 “除廚房水槽外的一切”。希望本文能幫助你找到最適合你的 PHP 框架。

現在回到您身邊:您最喜歡哪個 PHP 框架,為什麼?請在下面的評論中告訴我們!

評論留言