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