這些最熱門的 PHP 框架,哪一款是你的菜?

發表於2016-12-27

PHP 是世界上最流行的程式語言之一,廣泛用於主要的專案中。例如,Facebook 就是利用 PHP 來建立和維護他們的內部系統;WordPress 內部基於 PHP, 作為報答它為超過26%的網站提供了技術支援。而現在PHP已經為超過82%的網站提供了支援(Web Technology Surveys 站點能夠跟蹤的伺服器端程式語言)。

本文將通過 3 款最流行的 PHP 框架:Symfony, Laravel, 和 Yii 的比較,來幫助你找到最適合的 PHP 框架。

為什麼選擇 PHP 框架?

下面列出了一些使用 PHP 框架進行開發的好處:

  • PHP 框架使開發更快。比如,你不需要寫複雜的查詢操作來從資料庫中檢索資料,PHP 提供了增加(Create)、讀取(Retrieve)(重新得到資料)、更新(Update)和刪除(Delete)的操作。
  • 框架能夠使得開發者更容易地擴充套件系統。
  • 程式碼維護比普通的 PHP 應用更加容易。應用程式程式碼將更加簡潔。
  • MVC模式可保證快速發展。
  • 框架更好地保護Web應用程式免受常見的安全威脅。
  • DRY(Don’t Repeat Yourself )原則讓最少的程式碼發揮最大的作用。

以上所列的好處都具有十分重要的意義。儘管利用原生的 PHP 能夠寫出任何一個應用,但是現在的開發更多地要求使用工具和時間管理技能,以滿足市場需求。

如何選擇一款適合的 PHP 框架?

回答下面的問題能幫助你更好地選擇一款適合的框架:

  • 這個框架的特性和功能是什麼?(它提供了我需要的東西了嗎?)
  • 這個框架的學習曲線是怎麼樣的?
  • 這個框架的可擴充套件性如何?
  • 這個框架對於編碼團隊的開發和維護具有積極的作用嗎?
  • 這個框架提供了長時間支援版本(LTS support) 嗎?
  • 這個框架有強大的社群支援嗎?

Symfony, Laravel 和 Yii 概述

在深入到技術細節之前,先對三者進行一個概述:

Symfony

Symfony 是一款可重複使用的 PHP 元件,讓開發者開發可擴充套件的、高效能的應用。它有30個元件可供選擇,開發者可以在 RAD 環境下自由地進行實驗或工作。

一些比較出名的專案,像 Drupal and phpBB 使用的都是 Symfony 框架。事實上,另一款 PHP 流行框架 Laravel 也是建立自 Symfony 。

Laravel

“PHP framework for Web Artisans”——Laravel 作為最流行的 PHP 框架,為開發者提供了一個優秀的社群交流平臺(Laravel 的其中一個創始人是 Livecoding.tv 的 Sfiskell)。

2015 年 5 月 Laravel 釋出的 5.1 版本將提供長時間支援版本(兩年)。5.2 版本也在 2015 年 12 月推向市場。很多託管公司提供 Laravel 支援以及 Laravel 應用託管解決方案。

Yii

國人薛強在 2008 年建立的 Yii 是一個安全、快速、高效能的應用/ Web 開發框架。Yii 利用PHP的Composer 依賴項管理器來處理不同的依賴和安裝(下面我們會講到)。延遲載入技術( lazy loading technique)使得 Yii 成為最快的PHP 框架。

Yii 的另一個不錯的特性是整合了 jQuery,使得前端開發者能更快地上手,它利用基架來生成程式碼。Yii  和 Symfony 一樣是藉助元件來使應用開發更快。

Symfony, Laravel 和 Yii 比較

這三款框架都非常構建開發 Web 2.0 應用程式,但他們的側重點又各有不同。下面我們看一下他們各自的特性和安裝:

模板引擎

模板引擎能減輕開發者的負擔,在寫前端程式碼時提供更好的功能。模板引擎提供了諸如自動 HTML 轉義和過濾等功能,並填補了原生 PHP 留下的空白。

Symfony Twig 模板系統

Twig 是一個靈活,快速,安全的 PHP 模板語言。Symfony 的優勢是使用了 Twig 來使得開發者編寫乾淨、整潔的程式碼,並且能夠利用原生 PHP 來實現更多的功能。例如,下面冗長的程式碼實現的是轉義(escaping):

Twig 可以用下面的程式碼實現同樣的功能:

你可以進入 Twig 主頁來檢視更多的功能。

Laravel Blade 模板系統

跟其他的模板系統不同,Blade 允許你在檢視中使用 PHP 程式碼。而且,由於blade 檢視檔案儲存在 .blade.php extension裡面,所以 Blade 對你的應用效能損耗為 0。所有在檢視檔案裡面的程式碼可以在處理過程中就轉換成原生 PHP。

Yii 預設的模板系統

Yii 預設不使用任何第三方的模板系統,但這並不意味著它缺少模板系統的支援,模板系統的選擇取決於開發團隊,推薦 Twig 和 Smarty。Symfony 使用的是 Twig,所以如果你之前使用過 Symfony,你可能會想選擇 Twig 作為你下一個 Yii 專案的選擇。

很難定義那款才是最好的。這三個框架都利用了模板系統來更好地編寫和維護前端。 Yii 的一個小優勢是它沒有一個預定義的模板系統。

框架的差異

每個框架的構建都是不同的。Symfony 致力於可重用元件,並提供最好的模組化。另外 Symfony 利用模組和控制器來開發 Web 應用,這可能會讓一些剛入門的開發者望而卻步。此外,Symfony 還是一個很好的模組化結構的例子,你可以以模組化的方式在你的專案裡使用 symfony 提供的 30 個元件。

Yii採用 MVC 框架。(symfony 也支援 MVC 架構,更詳細的討論請看 blog.sznapka.pl 網站的 Is Symfony2 a MVC framework 

Symfony 可以用於快速開發複雜的專案。如果說哪個框架最適合複雜的專案的話,symfony 相比於其他框架具有十分優秀的複雜處理的能力 。Yii 也利用了元件,但和 symfony 的模組不一樣。Laravel 雖然沒有提供一個模組化的方法,但和其他兩個框架一樣好用。

如果你正在尋找一個模組化的框架的話就選擇 symfony。否則,Laravel 和 Yii 都是不錯的選擇。

安裝

這三個框架都提供了多個安裝過程,如果您使用 Composer 來處理包,就發現其實所有框架都可以通過Composer 安裝。

而對於 Symfony 來說,Composer 的作用尤為重要。因為使用 PHP 的 Composer 依賴項管理器是處理元件的好幫手。

當然也有其他的安裝框架的方式,例如使用簡單的歸檔方法來安裝。

安裝後,Yii 將提供一個 Web 應用程式和一個基本的模板幫助你的開發;Symfony 2 提供了一個開始演示應用程式;通過 Laravel 安裝程式來安裝和使用 Composer 來建立專案,使得 Laravel 也能夠很容易安裝使用。詳細資訊請檢視 Laravel 安裝指南。

發展

從公司或客戶的角度來看,迅速將應用程式推向市場以滿足消費者的需求並擊敗競爭對手是很重要的。 Symfony 由於其背後有強大的社群支撐而站穩腳跟; Laravel 正在快速成長,要被開發者完全認可仍有很長的路要走。另外,如果你還不知道任何 PHP 框架,希望儘快選擇一款適合你的,Laravel 是個不錯的選擇,它有一個簡單的學習曲線,並且有很多線上教程幫助你開始使用。Yii 將效能提升到一個新的水平,並提供程式碼基架,以便更快地生成和開發程式碼。

效能

任何應用程式的效能只有當它使用關鍵資料的實時應用程式時才有意義。有多少基於 Web 的應用程式依賴於高效能呢? 並不多,但是框架的效能在許多專案中可以發揮關鍵性的作用。

社交網路是實時事件的主要例子,我們的明星流媒體之一——jadson 就使用了 Yii2 建立移動社交網路。最快的 PHP 框架 Yii 毫無疑問是高效能應用程式編碼框架的最佳選擇。

Laravel 的效能是非常有爭議的。它是最慢的,但這重要嗎? 您可以找到很多用於加快效能的線上資源,包括使 Laravel 應用程式更快的 GitHub 指南。

資料庫支援

Symfony 2 提供更好的資料庫支援。您可以使用資料庫陣列,包括 NoSQL 和 DynamoDB。Yii 和 Laravel 也支援資料庫,但是所支援的資料庫比 Symfony 少。每個框架支援的資料庫如表1所示。

表1

%e6%8d%95%e8%8e%b7
社群和資源

社群力量是開源框架壽命的一個重要預測因素。這三個框架都有其固定的社群,Symfony 的相對較為成熟。社群仍在不斷地發展,因此很難預測未來社群的發展動態。

Laravel 在學習材料和文件方面做得最好,Symfony 和 Yii 也不差:

  • Laravel 文件
  • Symfony 文件(3.0)
  • Yii 文件

可擴充套件性

框架是可以進行或包擴充套件的結構,改進它們的功能和範圍。在這方面 Laravel 是當之無愧的贏家。 Packalyst 是 Laravel 軟體包的目錄,提供 9000 多個軟體包。而 Yii 和 Symfony 分別提供大約 2800 個擴充套件和 2830 個bundle。Laravel 以超越其他兩者的三倍的擴充套件性,成為這方面最好的框架。

Symfony, Laravel 和 Yii 相似之處

我們研究了框架之間的差異。 現在讓我們看看他們的相似之處:

1.三個框架都是全棧 PHP 框架,並提供了從建立 Web 應用程式前端程式碼編寫到後端資料檢索的功能。

2.這些專案都是開源的,他們的原始碼可以在 GitHub 上找到,每個人都可以輕鬆地貢獻自己的程式碼:

  • Symfony
  • Laravel
  • Yii

3.這些框架有很好的文件,並得到了大型社群的支援。

4.它們各自支援 ORM(物件關係對映)。ORM 非常喜歡為應用程式編寫物件導向的程式碼(OO code)。

5.用它們建立 Web 2.0 應用程式是安全和可靠的。

還是無法選擇? 也許這些清單可以幫助你縮小選擇範圍:

Symfony:

  • 提供 LTS 版本,
  • 具有負載功能,
  • 是目前最穩定的框架,
  • 是一個基於元件的框架,提供廣泛的模組化,
  • 有一個強大的社群和大量的學習資源

Yii:

  • 自帶 Ajax 支援
  • 非常適合開發實時應用程式
  • 高度可擴充套件
  • 準確的錯誤處理
  • 擅長建立 Restful Web Services
  • 有一個強大的社群和大量的學習資源

Laravel:

  • 2015-2016 年最流行的框架
  • 支援 Composer 進行包管理
  • 擅長做單元測試
  • 提供了大量的軟體包來擴充套件框架功能
  • 有一個強大的社群和大量的學習資源

結論:

在 Symfony 、Laravel 、Yii  三個PHP框架都是為開發人員提供全棧開發環境的優秀選項。我覺得 Laravel 是最大的贏家,並且仍然在不斷地發展壯大。

不過,Symfony 和 Yii 都是優秀的框架。Symfony 比較成熟,並且擁有一個更大、更成熟的社群。Yii 是一個獨特的,並能穩健、安全地完成工作的框架。

其他資源

  • Symfony2 vs Yii2: Which development framework should you choose?
  • 10 PHP Frameworks for Developers
  • It’s Laravel 5.1 for Enterprise Development

相關文章