PHP是世界上最受歡迎的編程語言之—。最近發布的PHP7令這種服務器的編程語言比以前變得更好,更穩定了。
PHP被廣泛應用於重大的項目。例如Facebook就是使用PHP來維護和創建它們的內部系統的。WordPress使用PHP來驅動它的內部構件,得到的回報是超過59%的網站都在使用WordPress作為內容管理系統。目前,有82%的網站,它們的服務器端使用的編程語言就是 PHP。
本文將介紹三種最流行的PHP框架:Symfony, Laravel和Yii。將通過三種框架的比較,幫助你選擇哪種框架有可能最符合你的需求。
為什么要選擇PHP框架?
為什么要使用框架而不是原生PHP來開發你的應用程序?下面是使用框架的一些好處:
- PHP框架令開發更快。例如,你不必寫復雜的查詢去檢索數據庫的數據,PHP框架提供CRUD操作(創建、閱讀、更新和刪除);
- 框架使開發人員能夠輕易地擴展系統;
- 代碼的維護比使用vanilla PHP應用更容易。應用程序的代碼簡潔,工作起來很方便;
- MVC模式可以確保快速開發;
- 框架更利於保護WEB的應用程序免受安全威脅;
- Don’t Repeat Yourself (DRY) Principle(不要重復你自己原則)確保最小的代碼能夠發揮最大的作用。
以上這些明顯的好處,我們不能忽略它們。即使原生PHP可以用來創建任何一個APP,但目前的開發標准要求工具和時間管理技巧都要符合市場要求。
如何選擇PHP框架?
在選擇一個框架時思考一下以下的問題:
- 這個框架的特色和功能是什么?它們是不是我所需要的?
- 這個框架的學習過程要多長?
- 它的穩定性如何?
- 這個框架是由核心團隊開發和維護的嗎?
- 這個框架可以提供長期支持嗎?
- 這個框架有強大的社區支持嗎?
Symfony, Laravel和Yii
在仔細研究技術細節之前,這里是三種框架的概述:
Symfony
Symfony是一套可重復使用的PHP組件,它允許開發者人員創建可擴展的,高效能的應用程序。它有30個組件可以選擇,開發人員可以有足夠的自由在RAD環境下進行試驗和工作。Symfony API還允許使用第三方應用來方便集成,它可以與流行的前端框架,例如AngularJS一起使用。
很多流行的項目,包括Drupal和phpBB,都使用了Symfony框架。 事實上,Laravel這個最流行的PHP框架是由Symfon建立的。
Laravel
Laravel被稱為是“網絡工程師的PHP框架”,它提供了一個出色的社區並贏得“最流行框架”的稱號。(在Livecoding.tv上,有一個優秀的Laravel程序員,他就是Sfiskell。)
(Sfishell在直播中)
在2015年5月,Laravel宣布5.1版將提供長達兩年的用戶支持。2015年12月,5.2版發布。很多托管公司提供Laravel支持,並為Laravel的應用提供托管方案。可以瀏覽Built with Laravel這個網站上出色的樣本項目。
Yii
Yii是在2008年由Qiang Xue創建的。Yii是一個安全,快速和高效的應用/網站開發框架。Yii采用Composer,是PHP的依賴管理工具,用來處理不同的依賴關系和安裝。Yii也是最快速的PHP框架,這歸因於延遲加載技術。
Yii另一個出色的功能是jQuery集成。集成使前端開發人員能夠快速地接受框架。它使用腳手架生成代碼。與Symfony相似,Yii也是利用組件來支持快速開發應用程序。
如何比較三種框架?
三種框架都很適合用來創建Web2.0應用程序,但每種框架的使用目的有所不同。我們看看它們具有哪些功能,以及它們之間的較量。
模板引擎
模板引擎減少開發人員的工作量,它為寫前端代碼提供更好的功能。模板引擎提供了諸如自動HTML轉義和過濾功能,並填寫由原生PHP留下的空白。
Symfony Twig 模板系統
Twig是PHP的現代模板系統。Symfony利用其優勢,使開發人員能夠編寫干凈、簡潔的代碼,而且它比原生PHP可以做得更多。例如,原生PHP寫的代碼:
<?php echo $var ?> <?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>
Twig用以下代碼可以做到同樣的工作:
{{ var }} {{ var|escape }} {{ var|e }} {# shortcut to escape a variable #}
瀏覽Twig網站了解更多有關它的功能。
Laravel Blade模板系統
不像其它的模板系統,Blade讓你在視圖中使用PHP代碼。另外,Blade具有零負荷應用程序的性能,因為它的視圖文件必須使用.blade.php擴展文件名。在處理過程中所有在視圖文件中的代碼都被轉換成原生PHP。
Yii默認模板系統
Yii不會默認使用任何第三方的模板系統,但這並不意味着它缺少模板系統支持。模板系統的選擇取決於開發團隊。推薦使用Twig和Smarty。Symfony使用Twig,所以如果你在過去已經用過Symfony,你可能需要用Twig來開發你的一個Yii項目。
這里沒有明確的哪個框架更好。三種框架使用模板引擎以便寫出更好的前端編碼和維護。Yii的一個小優勢是,框架沒有預先定義的模板系統。
框架的不同點
每一個框架的創建都是不同的。Symfony用可重復使用的組件工作,它還提供了最佳的模塊化。Symfony也利用模型和控制器來開發Web應用程序,在許多開發人員眼中,它可能看起來是遲鈍的,但它是有作用的。另外,Symfony是模塊化框構的一個很好例子。你可以用模塊化的方式在你的項目中使用它提供的30個組件。
Yii采用MVC框架。(Symfony為MVC提供支持,可以在Is Symfony2 a MVC framework了解更多細節。)
Symfony可以用來快速開發復雜的項目。即使有爭議說哪一個框架更有利於復雜的項目,Symfony相比其他框架,具有很出色處理復雜事物的能力。Yii也使用組件,但它並不是symfony那樣的模塊化。Laravel與其它兩個框架相比,載它的模塊化方式沒有這么犀利。
如果你正在尋找一個模塊化的框架,就選symfony吧,或者Laravel,Yii也是很不錯的選擇。
安裝
這三個框架提供了多個安裝程序。如果你使用的是用於處理軟件包的Composer,那太好了,因為它們三個都可以通過Composer安裝。
在symfony中, Composer的作用更為關鍵。組件處理的方法最好是用這個:Composer PHP dependency manager(Composer PHP依賴管理器)
還有其它方法安裝各自的框架。例如,你可以使用簡單的歸檔方法安裝框架。安裝后,Yii為你提供了一個Web應用程序和一個基本模板。Symfony 2還提供了一個演示程序來開始工作。
laravel也可以通過使用Composer創建項目或Laravel安裝器來快速安裝。查看Laravel installation guide了解更多Laravel安裝指南。
快速開發
從公司或客戶的角度來看,快速將應用程序推出市場,來滿足消費者的需求和擊敗競爭對手是很重要的。Symfony脫穎而出,因為它是一個有着有力社區支持的強大框架。Laravel發展得很快,但仍有很長的路要走,才能被視為PHP開發的必然選擇。另一方面,如果還沒有任何PHP框架的知識,又想盡快上手,可以考慮Laravel。Laravel的學習過程簡單,你會發現網上很多教程來幫助你上手。Yii將性能提升到一個新水平,並提供了代碼腳手架以便更快地生成代碼和開發。
性能
任何一個應用程序的性能,只有當它是使用關鍵數據的實時應用程序時才是重要的。有多少基於Web的應用程序依賴於高性能?不是很多,但框架的性能在許多項目中起着至關重要的作用。
社交網絡是實時事件的一個主要例子。Jadson使用Yii2創建了一個移動社交網絡。說到選擇最好的框架來編寫高性能的應用程序代碼,Yii作為最快的PHP框架,成為突出的選擇。
Laravel的性能是非常值得商榷的。它是最慢的,但這有什么關系呢?你可以在網上找到很多加速性能的資源,例如guide on GitHub,它可以加快你的Laravel應用程序。
數據庫支持
Symfony 2提供更好的數據庫支持。你可以使用一系列的數據庫工作,包括NoSQL和DynamoDB。Yii和laravel在這方面也是有用的,但他們支持的數據庫比symfony的少。每一個框架支持的數據庫如表1所示。
社區和資源
對一個開源框架的壽命預測要看它的社區優勢。三個框架都有穩固的社區,雖然symfony的可能會更成熟一點。社區是發展的,所以對社區未來動態的預測是具有挑戰性的。
說到學習材料和文件,laravel最突出,雖然Symfony和Yii也不遜色:
擴展性
框架是可以使用擴展或包來擴展的結構,提高了它們的功能和范圍。說到擴展,laravel是贏家。 Packalyst,它是laravel包的目錄,提供超過9000個包。Yii和symfony則分別提供了約2800個擴展和2830個包。Laravel是它們的3倍,因此從這方面來看,Laravel似乎是最好的框架。
相似點
我們已經介紹了框架之間的不同點。現在讓我們來看看它們相似的地方:
- 三種框架都是全棧的PHP開發框架,提供網絡應用的創建功能,從前端代碼的編寫到后端數據檢索。
- 項目是開源的,其源代碼可以在GitHub上找到,讓任何人都能輕松做出貢獻:
- 該框架有很好的文檔記錄,並由一個大社區支持。
- 它們都支持ORM(對象關系映射)。ORM在為應用程序寫OO代碼時備受歡迎。
- 它們是強大的,安全的,可靠的,用來創建Web 2.0應用程序。
還在覺得困惑嗎?下面這份清單也許可以幫你縮小選擇范圍:
Symfony:
- 提供一個LTS版本
- 帶有負載功能
- 是目前最穩定的框架
- 是基於構件的框架,提供了豐富的模塊化
- 具有一個出色的社區,提供豐富的學習資源
Yii:
- 自帶Ajax支持
- 十分適合用於開發實時應用程序,因為它的操作更快
- 是高度可擴展的
- 可准確無誤地處理錯誤
- 適合用來創建平靜的Web服務
- 具有一個出色的社區,提供豐富的學習資源
Laravel:
- 是2015-2016年最流行的框架
- 為設計者提供支持包管理
- 出色完成單元測試
- 提供豐富的包,用於擴展框架功能
- 具有一個出色的社區,提供豐富的學習資源
結束語
在Symfony 、Laravel和Yii三者較量中,這三個PHP框架都是很好的選擇,為開發人員提供了一個全棧開發環境。對我個人來說,Laravel更佳,它作為一顆新出現的“框架之星”,沒有停下來的跡象。
不過,Symfony和Yii都是優秀的框架。Symfony是行之有效的,有一個更大、更成熟的社區。Yii是一個獨特的框架,它是強大的,安全的,並能完成工作。
要想了解這些框架是如何工作的,可以訪問Livecoding.tv。網站上的開發人員在使用Symfony, Yii和 Laravel來開發項目。他們在直播過程中還可以通過Skype與觀眾溝通。關注他們的直播,提出你的問題,並得到實時回復。