PHP 是世界上最流行的编程语言之一,最近的 PHP 7 发布 使这种服务器端编程语言比以往任何时候都更好更稳定。
PHP 被广泛用于大型项目中。例如,Facebook 利用 PHP 来维护和创建其内部系统。WordPress 使用 PHP 来驱动其内部机制,而 WordPress 又驱动着网络的大部分。目前,PHP 驱动着超过 82% 的网站(Web 技术调查网站能够追踪到其服务器端编程语言的网站)。
在本文中,我们将研究三个最流行的 PHP 框架:Symfony、Laravel 和 Yii。我们将考察它们之间的比较,以帮助您决定哪一个最适合您的需求。
为什么要选择 PHP 框架?
使用框架而不是原始 PHP 来开发应用程序的意义何在? 使用框架的一些好处包括
- PHP 框架使开发更快。例如,您不必编写复杂的查询来从数据库中检索数据。 PHP 框架提供 CRUD 操作(创建、读取、更新和删除)。
- 框架使开发人员能够轻松扩展系统。
- 代码维护比使用原始 PHP 应用程序更容易。 应用程序代码简洁易于使用。
- MVC 模型 确保快速开发。
- 框架在保护 Web 应用程序免受常见安全威胁方面表现更好。
- 不要重复自己 (DRY) 原则 确保以最少的代码产生最大的影响。
以上好处太重要了,不能被忽视。即使原始 PHP 可用于创建任何应用程序,但当前的开发标准需要工具和时间管理技能来满足市场需求。
如何选择 PHP 框架
回答几个问题可以帮助您选择一个框架
- 框架的功能和特性是什么? (它是否提供我需要的?)
- 框架的学习曲线是什么?
- 框架的可扩展性如何?
- 框架是否由核心团队积极开发和维护?
- 框架是否提供长期支持(LTS 支持)?
- 框架是否有强大的社区支持?
Symfony、Laravel 和 Yii
在深入了解技术细节之前,先概述一下竞争者
Symfony
Symfony 是一组可重用的 PHP 组件,使开发人员能够创建可扩展的高性能应用程序。 有 30 个组件可供选择,开发人员可以完全自由地进行试验并在 RAD 环境中工作。 Symfony API 还支持与第三方应用程序轻松集成,并且可以与流行的前端框架(如 AngularJS)一起使用。
许多流行的项目,包括 Drupal 和 phpBB,也使用 Symfony 框架。 事实上,最流行的 PHP 框架 Laravel 就是建立在 Symfony 之上的。
Laravel
Laravel 被称为“Web 工匠的 PHP 框架”,它提供了一个优秀的社区,并赢得了 最流行的框架。(Livecoding.tv 上的 Laravel 主要开发人员之一是 Sfiskell。)
2015 年 5 月,Laravel 宣布 版本 5.1 将提供为期两年的长期支持。 版本 5.2 于 2015 年 12 月推出。 许多托管公司提供 Laravel 支持并为 Laravel 应用程序提供托管解决方案。 查看 Built with Laravel 网站以查看出色的示例项目。
Yii
Yii 由 Qiang Xue 于 2008 年创建,是一个安全、快速、高性能的应用程序/Web 开发框架。 Yii 利用 Composer PHP 依赖管理器来处理不同的依赖关系和安装(稍后会详细介绍)。 由于惰性加载技术,Yii 也是最快的 PHP 框架。
Yii 的另一个重要功能是 jQuery 集成。 该集成使前端开发人员能够快速采用该框架,并且它使用脚手架来生成代码。 与 Symfony 类似,Yii 也利用组件来实现快速应用程序开发。
它们如何比较
所有三个框架都非常适合构建 Web 2.0 应用程序,但每个框架都有不同的用途。 让我们看看它们的功能以及它们如何叠加。
模板引擎
模板引擎可以最大限度地减少开发人员的工作量,并在编写前端代码时提供更好的功能。 模板引擎提供诸如自动 HTML 转义和过滤器之类的功能,并填补了原始 PHP 留下的空白。
Symfony Twig 模板系统
Twig 是一个现代的 PHP 模板系统。 Symfony 利用 Twig 的优势,使开发人员能够编写干净、简洁的代码,并能够比原始 PHP 做更多的事情。 例如,以下冗长的代码用于编写转义
Twig 使用以下代码执行相同的操作
{{ var }} {{ var|escape }} {{ var|e }} {# 转义变量的快捷方式 #}
请访问 Twig 网站以了解有关其功能的更多信息。
Laravel Blade 模板系统
与其他模板系统不同,Blade 允许您在视图中使用 PHP 代码。 此外,Blade 对应用程序性能没有开销,因为 Blade 视图文件存储在 .blade.php 扩展名
中。 视图文件中的所有代码在处理期间都会转换为原始 PHP。
Yii 默认模板系统
默认情况下,Yii 不使用任何第三方模板系统,但这并不意味着它缺乏模板系统支持。 模板系统的选择取决于开发团队。 推荐使用 Twig 和 Smarty。 Symfony 使用 Twig,因此如果您过去使用过 Symfony,您可能希望在您的下一个 Yii 项目中使用 Twig。
这里没有明显的赢家。 所有三个框架都使用模板引擎来更好地进行前端编码和维护。 Yii 的一个小优势在于该框架没有预定义的模板系统。
框架差异
每个框架的创建方式都不同。 Symfony 基于 可重用组件 构建,并提供最佳的模块化。 Symfony 还利用模型和控制器来开发 Web 应用程序,这对于许多新开发人员来说可能看起来很过时,但它可以工作。 此外,Symfony 是模块化框架的一个很好的例子。 您可以以模块化的方式在您的项目中使用 Symfony 提供的 30 个组件。
Yii 使用 MVC 框架。(Symfony 确实提供对 MVC 的支持,这在 blog.sznapka.pl 网站上的 Symfony2 是否为 MVC 框架 中有更详细的讨论。)
Symfony 可用于快速开发和复杂项目。 尽管对于哪个框架更适合复杂项目存在争议,但 Symfony 与其他框架相比,确实展示了出色的复杂性处理能力。 Yii 也利用组件,但不如 Symfony 模块化。 Laravel 没有像其他两个框架那样提供清晰的模块化方法。
如果您正在寻找一个模块化框架,请选择 Symfony。 否则,Laravel 和 Yii 都是不错的选择。
安装
这三个框架提供了多种安装程序。 如果您使用 Composer 来处理软件包,您会很高兴地知道所有框架都可以通过 Composer 安装。
对于 Symfony,Composer 的作用更为关键。 组件处理的最佳方法是使用 Composer PHP 依赖管理器。
还有其他安装相应框架的方法。 例如,您可以使用简单的存档方法安装框架。
安装完成后,Yii 为您提供一个 Web 应用程序和一个基本模板以供使用。 Symfony 2 还提供了一个演示应用程序来帮助您入门。
Laravel 也很容易使用 Composer create-project 或通过 Laravel Installer 安装。 有关详细信息,请查看 Laravel 安装指南。
快速开发
从公司或客户的角度来看,快速将应用程序推向市场以满足消费者需求并击败竞争对手非常重要。 Symfony 以其强大的框架和强大的社区支持而脱颖而出。 Laravel 正在快速发展,但在被认为是 PHP 开发的事实上的选择之前,还有很长的路要走。 另一方面,如果您不了解任何 PHP 框架并且想要尽快开始,请考虑 Laravel。 Laravel 具有简单的学习曲线,您会在网上找到许多教程来帮助您入门。 Yii 将性能提升到一个新的水平,并提供代码脚手架,以实现更快的代码生成和开发。
性能
只有在使用关键数据的实时应用程序中,应用程序的性能才重要。 有多少基于 Web 的应用程序依赖于高性能? 不多,但框架的性能可以在许多项目中发挥关键作用。
社交网络是实时事件的主要示例,我们的明星主播之一 jadson 使用 Yii2 构建了一个移动社交网络。 在选择用于编码高性能应用程序的最佳框架时,Yii 脱颖而出,成为我们系列中最快的 PHP 框架。
Laravel 的性能备受争议。 它是最慢的,但这重要吗? 您会找到加速性能的在线资源,包括 GitHub 上的指南,用于加速您的 Laravel 应用程序。
数据库支持
Symfony 2 提供更好的数据库支持。 您可以使用各种数据库,包括 NoSQL 和 DynamoDB。 Yii 和 Laravel 在这方面也很有用,但它们支持的数据库比 Symfony 少。 每个框架支持的数据库如表 1 所示。
框架 | Laravel | Yii | Symfony 2 |
---|---|---|---|
数据库 | Microsoft BI MongoDB MySQL PostgreSQL Redis SQLite
|
Microsoft BI |
Apache Jackrabbit CouchDB DynamoDB GemFire GraphDB MemBase MemCacheDB Microsoft BI MongoDB MySQL NoSQL Oracle PostgreSQL |
社区和资源
开源框架寿命的一个重要预测指标是其社区的实力。 所有这三个框架都有坚实的社区,尽管 Symfony 的社区可能更成熟一些。 社区不断发展,因此预测未来社区的动态具有挑战性。
在学习材料和文档方面,Laravel 脱颖而出,尽管 Symfony 和 Yii 并没有远远落后
可扩展性
框架是可以通过扩展或包来扩展的结构,从而提高它们的功能和范围。说到扩展,Laravel是赢家。 Packalyst,一个Laravel包的目录,提供了超过9000个包。另一方面,Yii和Symfony分别提供大约2800个扩展和2830个捆绑包。凭借三倍数量的扩展,Laravel在这方面似乎是最好的框架。
相似之处
我们已经了解了这些框架之间的差异。现在让我们来看看它们的相似之处
- 所有三个框架都是全栈PHP框架,并提供创建Web应用程序的功能,从前端代码编写到后端数据检索。
- 这些项目都是开源的,它们的源代码可以在GitHub上找到,方便任何人贡献。
- 这些框架都有完善的文档,并受到大型社区的支持。
- 它们都支持ORM(对象关系映射)。 ORM非常适合为您的应用程序编写面向对象的代码。
- 它们是健壮、安全和可靠的,可以用于创建Web 2.0应用程序。
仍然卡住了?也许这些清单可以帮助您缩小选择范围
Symfony
- 提供LTS版本,
- 附带大量功能,
- 目前是最稳定的框架,
- 是一个基于组件的框架,并提供广泛的模块化,
- 并且拥有一个拥有大量学习资源的优秀社区。
Yii
- 附带Ajax支持,
- 非常适合开发实时应用程序,因为它提供更快的操作,
- 具有高度的可扩展性。
- 错误处理非常出色,
- 适合创建Restful Web服务,
- 并且拥有一个拥有大量学习资源的优秀社区。
Laravel
- 是2015-2016年最受欢迎的框架,
- 支持Composer进行包管理,
- 单元测试做得很好,
- 提供大量的包来扩展框架功能,
- 并且拥有一个拥有大量学习资源的优秀社区。
结论
在Symfony vs. Laravel vs. Yii的竞争中,所有三个PHP框架都是出色的选择,它们为开发人员提供了全栈开发环境。对我来说,Laravel是一个赢家,它正在崛起为一颗明星,并且没有停止的迹象。
尽管如此,Symfony和Yii都是优秀的框架。 Symfony已经建立起来,并且拥有更大、更成熟的社区。 Yii是一个独特的框架,它健壮、安全,并且可以完成工作。
要观看这些框架的实际应用,请在Livecoding.tv上查看开发人员如何使用它们,该网站拥有Symfony、Yii和Laravel的频道。开发人员也可以在流媒体会话期间通过聊天或Skype获得帮助。关注开发人员,提出您的问题,并获得实时解答。
16条评论