- 相關(guān)推薦
2017最熱門的PHP框架
PHP 是世界上最流行的編程語言之一,廣泛用于主要的項(xiàng)目中。例如,F(xiàn)acebook 就是利用 PHP 來創(chuàng)建和維護(hù)他們的內(nèi)部系統(tǒng);WordPress 內(nèi)部基于 PHP, 作為報(bào)答它為超過26%的網(wǎng)站提供了技術(shù)支持。而現(xiàn)在PHP已經(jīng)為超過82%的網(wǎng)站提供了支持(Web Technology Surveys 站點(diǎn)能夠跟蹤的服務(wù)器端編程語言)。
本文將通過 3 款最流行的 PHP 框架:Symfony, Laravel, 和 Yii 的比較,來幫助你找到最適合的 PHP 框架。
為什么選擇 PHP 框架?
下面列出了一些使用 PHP 框架進(jìn)行開發(fā)的好處:
PHP 框架使開發(fā)更快。比如,你不需要寫復(fù)雜的查詢操作來從數(shù)據(jù)庫中檢索數(shù)據(jù),PHP 提供了增加(Create)、讀取(Retrieve)(重新得到數(shù)據(jù))、更新(Update)和刪除(Delete)的操作。
框架能夠使得開發(fā)者更容易地?cái)U(kuò)展系統(tǒng)。
代碼維護(hù)比普通的 PHP 應(yīng)用更加容易。應(yīng)用程序代碼將更加簡潔。
MVC模式可保證快速發(fā)展。
框架更好地保護(hù)Web應(yīng)用程序免受常見的安全威脅。
DRY(Don’t Repeat Yourself )原則讓最少的代碼發(fā)揮最大的作用。
以上所列的好處都具有十分重要的意義。盡管利用原生的 PHP 能夠?qū)懗鋈魏我粋(gè)應(yīng)用,但是現(xiàn)在的開發(fā)更多地要求使用工具和時(shí)間管理技能,以滿足市場需求。
如何選擇一款適合的 PHP 框架?
回答下面的問題能幫助你更好地選擇一款適合的框架:
這個(gè)框架的特性和功能是什么?(它提供了我需要的東西了嗎?)
這個(gè)框架的學(xué)習(xí)曲線是怎么樣的?
這個(gè)框架的可擴(kuò)展性如何?
這個(gè)框架對于編碼團(tuán)隊(duì)的開發(fā)和維護(hù)具有積極的作用嗎?
這個(gè)框架提供了長時(shí)間支持版本(LTS support) 嗎?
這個(gè)框架有強(qiáng)大的社區(qū)支持嗎?
Symfony, Laravel 和 Yii 概述
在深入到技術(shù)細(xì)節(jié)之前,先對三者進(jìn)行一個(gè)概述:
Symfony
Symfony 是一款可重復(fù)使用的 PHP 組件,讓開發(fā)者開發(fā)可擴(kuò)展的、高性能的應(yīng)用。它有30個(gè)組件可供選擇,開發(fā)者可以在 RAD 環(huán)境下自由地進(jìn)行實(shí)驗(yàn)或工作。
一些比較出名的項(xiàng)目,像 Drupal and phpBB 使用的都是 Symfony 框架。事實(shí)上,另一款 PHP 流行框架 Laravel 也是建立自 Symfony 。
Laravel
“PHP framework for Web Artisans”——Laravel 作為最流行的 PHP 框架,為開發(fā)者提供了一個(gè)優(yōu)秀的社區(qū)交流平臺(tái)(Laravel 的其中一個(gè)創(chuàng)始人是 Livecoding.tv 的 Sfiskell)。
2015 年 5 月 Laravel 發(fā)布的 5.1 版本將提供長時(shí)間支持版本(兩年)。5.2 版本也在 2015 年 12 月推向市場。很多托管公司提供 Laravel 支持以及 Laravel 應(yīng)用托管解決方案。
Yii
國人薛強(qiáng)在 2008 年創(chuàng)建的 Yii 是一個(gè)安全、快速、高性能的應(yīng)用/ Web 開發(fā)框架。Yii 利用PHP的Composer 依賴項(xiàng)管理器來處理不同的依賴和安裝(下面我們會(huì)講到)。延遲加載技術(shù)( lazy loading technique)使得 Yii 成為最快的PHP 框架。
Yii 的另一個(gè)不錯(cuò)的特性是整合了 jQuery,使得前端開發(fā)者能更快地上手,它利用基架來生成代碼。Yii 和 Symfony 一樣是借助組件來使應(yīng)用開發(fā)更快。
Symfony, Laravel 和 Yii 比較
這三款框架都非常構(gòu)建開發(fā) Web 2.0 應(yīng)用程序,但他們的側(cè)重點(diǎn)又各有不同。下面我們看一下他們各自的特性和安裝:
模板引擎
模板引擎能減輕開發(fā)者的負(fù)擔(dān),在寫前端代碼時(shí)提供更好的功能。模板引擎提供了諸如自動(dòng) HTML 轉(zhuǎn)義和過濾等功能,并填補(bǔ)了原生 PHP 留下的空白。
Symfony Twig 模板系統(tǒng)
Twig 是一個(gè)靈活,快速,安全的 PHP 模板語言。Symfony 的優(yōu)勢是使用了 Twig 來使得開發(fā)者編寫干凈、整潔的代碼,并且能夠利用原生 PHP 來實(shí)現(xiàn)更多的功能。例如,下面冗長的代碼實(shí)現(xiàn)的是轉(zhuǎn)義(escaping):
<?php echo $var ?> <?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>
Twig 可以用下面的代碼實(shí)現(xiàn)同樣的功能:
{{ var }} {{ var|escape }} {{ var|e }} {# shortcut to escape a variable #}
你可以進(jìn)入 Twig 主頁來查看更多的功能。
Laravel Blade 模板系統(tǒng)
跟其他的模板系統(tǒng)不同,Blade 允許你在視圖中使用 PHP 代碼。而且,由于blade 視圖文件存儲(chǔ)在 .blade.php extension里面,所以 Blade 對你的應(yīng)用性能損耗為 0。所有在視圖文件里面的代碼可以在處理過程中就轉(zhuǎn)換成原生 PHP。
Yii 默認(rèn)的模板系統(tǒng)
Yii 默認(rèn)不使用任何第三方的模板系統(tǒng),但這并不意味著它缺少模板系統(tǒng)的支持,模板系統(tǒng)的選擇取決于開發(fā)團(tuán)隊(duì),推薦 Twig 和 Smarty。Symfony 使用的是 Twig,所以如果你之前使用過 Symfony,你可能會(huì)想選擇 Twig 作為你下一個(gè) Yii 項(xiàng)目的選擇。
很難定義那款才是最好的。這三個(gè)框架都利用了模板系統(tǒng)來更好地編寫和維護(hù)前端。 Yii 的一個(gè)小優(yōu)勢是它沒有一個(gè)預(yù)定義的模板系統(tǒng)。
框架的差異
每個(gè)框架的構(gòu)建都是不同的。Symfony 致力于可重用組件,并提供最好的模塊化。另外 Symfony 利用模塊和控制器來開發(fā) Web 應(yīng)用,這可能會(huì)讓一些剛?cè)腴T的開發(fā)者望而卻步。此外,Symfony 還是一個(gè)很好的模塊化結(jié)構(gòu)的例子,你可以以模塊化的方式在你的項(xiàng)目里使用 symfony 提供的 30 個(gè)組件。
Yii采用 MVC 框架。(symfony 也支持 MVC 架構(gòu),更詳細(xì)的討論請看 blog.sznapka.pl 網(wǎng)站的 Is Symfony2 a MVC framework )
Symfony 可以用于快速開發(fā)復(fù)雜的項(xiàng)目。如果說哪個(gè)框架最適合復(fù)雜的項(xiàng)目的話,symfony 相比于其他框架具有十分優(yōu)秀的復(fù)雜處理的能力 。Yii 也利用了組件,但和 symfony 的模塊不一樣。Laravel 雖然沒有提供一個(gè)模塊化的方法,但和其他兩個(gè)框架一樣好用。
如果你正在尋找一個(gè)模塊化的框架的話就選擇 symfony。否則,Laravel 和 Yii 都是不錯(cuò)的選擇。
安裝
這三個(gè)框架都提供了多個(gè)安裝過程,如果您使用 Composer 來處理包,就發(fā)現(xiàn)其實(shí)所有框架都可以通過Composer 安裝。
而對于 Symfony 來說,Composer 的作用尤為重要。因?yàn)槭褂?PHP 的 Composer 依賴項(xiàng)管理器是處理組件的好幫手。
當(dāng)然也有其他的安裝框架的方式,例如使用簡單的歸檔方法來安裝。
安裝后,Yii 將提供一個(gè) Web 應(yīng)用程序和一個(gè)基本的模板幫助你的開發(fā);Symfony 2 提供了一個(gè)開始演示應(yīng)用程序;通過 Laravel 安裝程序來安裝和使用 Composer 來創(chuàng)建項(xiàng)目,使得 Laravel 也能夠很容易安裝使用。詳細(xì)信息請查看 Laravel 安裝指南。
發(fā)展
從公司或客戶的角度來看,迅速將應(yīng)用程序推向市場以滿足消費(fèi)者的需求并擊敗競爭對手是很重要的。 Symfony 由于其背后有強(qiáng)大的社區(qū)支撐而站穩(wěn)腳跟; Laravel 正在快速成長,要被開發(fā)者完全認(rèn)可仍有很長的路要走。另外,如果你還不知道任何 PHP 框架,希望盡快選擇一款適合你的,Laravel 是個(gè)不錯(cuò)的選擇,它有一個(gè)簡單的學(xué)習(xí)曲線,并且有很多在線教程幫助你開始使用。Yii 將性能提升到一個(gè)新的水平,并提供代碼基架,以便更快地生成和開發(fā)代碼。
性能
任何應(yīng)用程序的性能只有當(dāng)它使用關(guān)鍵數(shù)據(jù)的實(shí)時(shí)應(yīng)用程序時(shí)才有意義。有多少基于 Web 的應(yīng)用程序依賴于高性能呢? 并不多,但是框架的性能在許多項(xiàng)目中可以發(fā)揮關(guān)鍵性的作用。
社交網(wǎng)絡(luò)是實(shí)時(shí)事件的主要例子,我們的明星流媒體之一——jadson 就使用了 Yii2 建立移動(dòng)社交網(wǎng)絡(luò)。最快的 PHP 框架 Yii 毫無疑問是高性能應(yīng)用程序編碼框架的最佳選擇。
Laravel 的性能是非常有爭議的。它是最慢的,但這重要嗎? 您可以找到很多用于加快性能的在線資源,包括使 Laravel 應(yīng)用程序更快的 GitHub 指南。
數(shù)據(jù)庫支持
Symfony 2 提供更好的數(shù)據(jù)庫支持。您可以使用數(shù)據(jù)庫數(shù)組,包括 NoSQL 和 DynamoDB。Yii 和 Laravel 也支持?jǐn)?shù)據(jù)庫,但是所支持的數(shù)據(jù)庫比 Symfony 少。每個(gè)框架支持的數(shù)據(jù)庫如表1所示。
表1
社區(qū)和資源
社區(qū)力量是開源框架壽命的一個(gè)重要預(yù)測因素。這三個(gè)框架都有其固定的社區(qū),Symfony 的相對較為成熟。社區(qū)仍在不斷地發(fā)展,因此很難預(yù)測未來社區(qū)的發(fā)展動(dòng)態(tài)。
Laravel 在學(xué)習(xí)材料和文檔方面做得最好,Symfony 和 Yii 也不差:
Laravel 文檔
Symfony 文檔(3.0)
Yii 文檔
可擴(kuò)展性
框架是可以進(jìn)行或包擴(kuò)展的結(jié)構(gòu),改進(jìn)它們的功能和范圍。在這方面 Laravel 是當(dāng)之無愧的贏家。 Packalyst 是 Laravel 軟件包的目錄,提供 9000 多個(gè)軟件包。而 Yii 和 Symfony 分別提供大約 2800 個(gè)擴(kuò)展和 2830 個(gè)bundle。Laravel 以超越其他兩者的三倍的擴(kuò)展性,成為這方面最好的框架。
Symfony, Laravel 和 Yii 相似之處
我們研究了框架之間的差異。 現(xiàn)在讓我們看看他們的相似之處:
1.三個(gè)框架都是全棧 PHP 框架,并提供了從創(chuàng)建 Web 應(yīng)用程序前端代碼編寫到后端數(shù)據(jù)檢索的功能。
2.這些項(xiàng)目都是開源的,他們的源代碼可以在 GitHub 上找到,每個(gè)人都可以輕松地貢獻(xiàn)自己的代碼:
Symfony
Laravel
Yii
3.這些框架有很好的文檔,并得到了大型社區(qū)的支持。
4.它們各自支持 ORM(對象關(guān)系映射)。ORM 非常喜歡為應(yīng)用程序編寫面向?qū)ο蟮拇a(OO code)。
5.用它們創(chuàng)建 Web 2.0 應(yīng)用程序是安全和可靠的。
還是無法選擇? 也許這些清單可以幫助你縮小選擇范圍:
Symfony:
提供 LTS 版本,
具有負(fù)載功能,
是目前最穩(wěn)定的框架,
是一個(gè)基于組件的框架,提供廣泛的模塊化,
有一個(gè)強(qiáng)大的社區(qū)和大量的學(xué)習(xí)資源
Yii:
自帶 Ajax 支持
非常適合開發(fā)實(shí)時(shí)應(yīng)用程序
高度可擴(kuò)展
準(zhǔn)確的錯(cuò)誤處理
擅長創(chuàng)建 Restful Web Services
有一個(gè)強(qiáng)大的社區(qū)和大量的學(xué)習(xí)資源
Laravel:
2015-2016 年最流行的框架
支持 Composer 進(jìn)行包管理
擅長做單元測試
提供了大量的軟件包來擴(kuò)展框架功能
有一個(gè)強(qiáng)大的社區(qū)和大量的學(xué)習(xí)資源
結(jié)論:
在 Symfony 、Laravel 、Yii 三個(gè)PHP框架都是為開發(fā)人員提供全棧開發(fā)環(huán)境的優(yōu)秀選項(xiàng)。我覺得 Laravel 是最大的贏家,并且仍然在不斷地發(fā)展壯大。
不過,Symfony 和 Yii 都是優(yōu)秀的框架。Symfony 比較成熟,并且擁有一個(gè)更大、更成熟的社區(qū)。Yii 是一個(gè)獨(dú)特的,并能穩(wěn)健、安全地完成工作的框架。
其他資源
Symfony2 vs Yii2: Which development framework should you choose?
10 PHP Frameworks for Developers
It’s Laravel 5.1 for Enterprise Development
【最的PHP框架】相關(guān)文章:
PHP如何做好最基礎(chǔ)的安全防范03-29
PHP的壓縮函數(shù)03-31
php高級教程01-23
淺析php函數(shù)的實(shí)例04-01
如何學(xué)好PHP知識(shí)03-30