PHP 是世界上最流行的编程语言之一,并且最近 PHP7 的发布让这门服务器端的编程语言比以往更加的强大和稳定。
PHP 广泛应用于大型项目,例如 Facebook 使用 PHP 来建立和维护他们的内部系统。Wordpress 使用 PHP 作为它的内核使其占据了 26%的 web 项目。目前 82%的 web 网站使用 PHP 作为其服务器端的开发语言(据 Web Tecnology Surveys 网站调查)
在这篇文章内,我们将一起来分析 3 中最流行的 PHP 框架:Symfony、Laravel、和 Yii。我门通过说明怎么比较它们来帮助大家选择一个最适合自己需求的框架。
是什么让我们使用框架而不是使用纯粹的 php 原生语言来开发我们的应用?使用框架的一些好处如下:
以上的好处很显著以致于不容忽视。即使使用原生的 PHP 也能用来开发任何的应用,但是当前的开发规范要求使用工具和时间管理的技巧来满足市场的需要。
回答下面的一些问题能帮助你选择适合自己的框架:
在深究技术细节之前,我们先来整体介绍下这 3 个竞争者
Symfony 是一套可复用的 PHP 组件,这些组件可以使开发者开发出易扩展和高性能的应用。有 30 个组件可供选择,开发者有完全的自由在 RAD 环境中实验和工作。Symfony 的 APIs 也使得它很容易的与第三方应用整合,它也能与流行的前端框架一起使用,比如 AngularJs。
很多的流行项目包括 Drupal 和 phpBB 也使用了 Symfony 框架。实际上目前最流行的框架 Laravel 也是建立在 Symfony 上。
Laravel 作为“为 web 艺术家而生的框架”被广泛使用,它提供了极其优秀的社区并获得了最流行的框架的称号。
在 2015 年 5 月 Laravel 发布声明 Laravel5.1 版本将提供 2 年的长期支持。2015 年 11 月 5.2 版本推出。很多托管提供商提供 Laravel 支持并提供 Laravel 应用的托管解决方案。
Qiang Xue 在 2008 年推出了 Yii 框架,Yii 框架安全、快速、性能卓越。Yii 使用 Composer 作为它的 php 依赖管理工具来帮助处理不同的依赖和其安装。得益于惰性加载技术的使用,Yii 框架是目前速度最快的框架。
Yii 另一个伟大的特性是整合来 JQuery。这种整合使得前端的开发者开始的拥抱它,并且它使用脚手架生成代码,类似与 Symfony。Yii 也使用组件来快速开发应用。
这 3 个框架开发 Web2.0 应用都非常的好,但是各自服务与不同的目的。让我们看看它们的特性以及它们目前的状态。
模板引擎在编写前端代码时,简化开发者的工作并提供更好的功能。模版引擎提供的特性包括自动 html 代码转义和过滤、添补原生 php 留下的间隙。
Twig 是一个 PHP 的现代模板系统。Symfony 利用 Twig 的优势使开发者写出更加干净、简洁的代码。
详见Twig网站学习更多的关于 twig 的特性
不像其他的模板系统,Blade 让你在视图中是用 PHP 代码。并且 Blade 对应用的性能影响几乎为零,因为视图文件都是以.blade.php
作为扩展名。视图文件所有的代码在程序运行中都转换为了原生的 php。
Yii 默认没有使用任何第三方模版系统,但是这并不意味者它缺少对模版引擎的支持。模板引擎的选择取决去开发团队。Yii 推荐使用 Twig 和 Smarty 模板引擎。介于 Symfony 使用的是 Twig,所以如果你以前使用过 Symfony,你可能想在你的下一个 Yii 框架中使用 Twig。
这里没有明显的优胜者。3 个框架都使用模版引擎使前端代码的的书写和维护更简单。Yii 的一个小优势是它没有提前预设一个模板系统。
每个框架都不一样。Symfony 致力于提供可复用的组件和提供最好的模块化支持。Symfony 也使用模型和控制器来开发 web 应用,对于新的开发者这看起来有点老套。但是确实好用。对于模块化框架来说 Symfony 是一个很好的例子。你可以使用模块化的方式在你的项目中使用 Symfony 提供的 30 个组件。
Yii 框架使用 MVC 模型( Symfony 也提供对 MVC 的支持)
Symfony 可以用来快速开发和用于复杂项目。即便有对哪个框架最适合开发复杂项目有争议,Symfony 相对于其他框架显示出了卓越的复杂处理能力
Yii 也使用组件但是不像 Symfony 一样模块化。Laravel 不像另外 2 个框架一样提供激进的模块化支持。
如果你正在寻找一个模块化的框架,就去选择 Symfony,其他的话,Laravel 和 Yii 都是很好的选择。
这三个框架提供了许多安装程序。如果你用 Composer 去处理安装包,你会很高兴发现,所有的框架都可以通过 Composer 安装
对 Symfony 而言,Composer 的作用更加关键。通过使用 PHPComposer 依赖管理器,组件处理的想法能更好的实现。
各个框架还有其他的安装方式。例如,您可以使用简单的归档方法安装框架。
安装完成后,Yii 为你提供了一个 Web 应用程序和一个基本模板来工作。Symfony2 还提供了一个开始的演示程序。
Laravel 通过 Composer 的composer create-project
命令或者通过 Laravel 安装器也能简单的进行安装。详情请查看 laravel 安装指南。
从公司或客户的角度来看,快速地将应用程序推向市场以满足消费者的需求并击败竞争对手是很重要的。 symfony 有一个强大社去支撑,并作为一个健壮的框架而凸显出来。Laravel 正在迅速成长,但在被视为 PHP 实际的开发选择之前,Laravel 还有很长的路要走。 另一方面,如果你不认识任何 PHP 框架,又想尽快上手,那么可以考虑 Laravel。Laravel 有一个简单的学习曲线,你会发现网上很多教程来帮助你开始。 Yii 的性能有一个新的水平,并为快速的的代码生成和开发提供了代码脚手架。
任何应用程序的性能只关系到它是否是一个使用关键数据的实时应用程序。有多少依赖高性能的 web 应用程序?并不是很多,但是框架的性能在许多项目中可以起到关键的作用。
社交网络是实时事件应用的首选例子,我们的一个明星的产品-jadson 使用 yii2 建了一个移动社交网络,当初我们为编写高性能的应用而选择一个最好的框架时。Yii 作为最快的 PHP 框架而凸显出来。
Laravel 的性能是一个颇有争议的问题。它是最慢的,但这有关系吗?你会找到在线资源去加速它的性能,包括 GitHub 上的指南让你的 laravel 应用变得更快。
Symfony 2 提供了更好的数据库支持。你可以使用一组数据库,包括 NoSQL 和 DynamoDB。 Yii 和 Laravel 在这方面也同样有用,但他们支持的数据库比 symfony 的少。每个框架支持的数据库如表 1 所示。
开源框架持久性的一个重要预测因素是其社区的力量。这 3 个框架都有稳定而坚实的社区,尽管 Symfony 的社区可能更成熟一些,但是社区在进化,所以对社区的未来的动态预测很难。 说到学习资料和文档,Laravel 突出出来来,尽管 Symfony 和 Yii 并没有落后很多。
框架是可以通过扩展或包进行扩展的结构,用来改进了它们的功能和范围。说到扩展,Laravel 是赢家。packalyst 一个 laravel 扩展包的库提供超过 9000 的扩展包。另一方面 Yii 和 symfony 分别提供了 2800 左右的扩展和 2830 的包,Laravel 提供来超过 3 被的扩展。Laravel 在这方面似乎是最好的框架。
我们已经研究了框架之间的差异。现在让我们看看它们的相似之处:
仍然迷惑?也许这些列表有助于你缩小选择范围:
在 Symfony 与 Laravel 与 Yii 的竞争中,3 个框架都是极好的选择,都为开发者提供来全栈的开发环境。对于我来说,作为一种新兴的且没有停止的迹象的明星-Laravel 是一个胜利者。
本文为翻译文档-- 原文链接
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.