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):
<?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 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
社区和资源
社群力量是開源框架壽命的一個重要預測因子。這三個框架都有其固定的社區,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:
在Symfony 、Laravel 、Yii 三個PHP框架都是為開發人員提供全端開發環境的優秀選項。我覺得 Laravel 是最大的贏家,而且仍然在不斷地發展壯大。
不過,Symfony 和 Yii 都是優秀的框架。 Symfony 比較成熟,並且擁有更大、更成熟的社群。 Yii 是一個獨特的,並能穩健、安全地完成工作的框架。
其他資源以上是一些PHP 框架的詳細內容。更多資訊請關注PHP中文網其他相關文章!