PHP 是世界上最流行的编程语言之一,广泛用于主要的项目中。例如,Facebook 就是利用 PHP 来创建和维护他们的内部系统;WordPress 内部基于 PHP, 作为报答它为超过26%的网站提供了技术支持。而现在 PHP已经为超过82%的网站提供了支持 (Web Technology Surveys 站点能够跟踪的服务器端编程语言)。
本文将通过 3 款最流行的 PHP 框架:Symfony,Laravel, 和 Yii 的比较,来帮助你找到最适合的 PHP 框架。
下面列出了一些使用 PHP 框架进行开发的好处:
以上所列的好处都具有十分重要的意义。尽管利用原生的 PHP 能够写出任何一个应用,但是现在的开发更多地要求使用工具和时间管理技能,以满足市场需求。
回答下面的问题能帮助你更好地选择一款适合的框架:
在深入到技术细节之前,先对三者进行一个概述:
Symfony 是一款可重复使用的 PHP 组件,让开发者开发可扩展的、高性能的应用。它有30个组件可供选择,开发者可以在 RAD 环境下自由地进行实验或工作。
一些比较出名的项目,像Drupaland phpBB使用的都是 Symfony 框架。事实上,另一款 PHP 流行框架 Laravel 也是建立自 Symfony 。
"PHP framework for Web Artisans"——Laravel 作为最流行的 PHP 框架,为开发者提供了一个优秀的社区交流平台(Laravel 的其中一个创始人是 Livecoding.tv 的 Sfiskell )。
2015 年 5 月 Laravel 发布的 5.1 版本将提供长时间支持版本(两年)。5.2 版本也在 2015 年 12 月推向市场。很多托管公司提供 Laravel 支持以及 Laravel 应用托管解决方案。
国人 薛强 在 2008 年创建的 Yii 是一个安全、快速、高性能的应用/ Web 开发框架。Yii 利用PHP的 Composer 依赖项管理器来处理不同的依赖和安装(下面我们会讲到)。延迟加载技术( lazy loading technique)使得 Yii 成为最快的PHP 框架。
Yii 的另一个不错的特性是整合了 jQuery,使得前端开发者能更快地上手,它利用基架来生成代码。Yii 和 Symfony 一样是借助组件来使应用开发更快。
这三款框架都非常构建开发 Web 2.0 应用程序,但他们的侧重点又各有不同。下面我们看一下他们各自的特性和安装:
模板引擎能减轻开发者的负担,在写前端代码时提供更好的功能。模板引擎提供了诸如自动 HTML 转义和过滤等功能,并填补了原生 PHP 留下的空白。
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 主页 来查看更多的功能。
跟其他的模板系统不同, Blade 允许你在视图中使用 PHP 代码。而且,由于blade 视图文件存储在 .blade.php extension里面,所以 Blade 对你的应用性能损耗为 0。所有在视图文件里面的代码可以在处理过程中就转换成原生 PHP。
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
框架 | Laravel | Yii | Symfony 2 |
数据库 | SQLite MySQL PostgreSQL Redis Microsoft BI MongoDB |
MySQL SQLite Microsoft BI Oracle PostgreSQL MongoDB |
Microsoft BI MongoDB MySQL NoSQL PostgreSQL CouchDB DynamoDB GemFire GraphDB MemBase MemCacheDB Oracle Apache Jackrabbit |
社区力量是开源框架寿命的一个重要预测因素。这三个框架都有其固定的社区,Symfony 的相对较为成熟。社区仍在不断地发展,因此很难预测未来社区的发展动态。
Laravel 在学习材料和文档方面做得最好,Symfony 和 Yii 也不差:
框架是可以进行或包扩展的结构,改进它们的功能和范围。在这方面 Laravel 是当之无愧的赢家。 Packalyst 是 Laravel 软件包的目录,提供 9000 多个软件包。而 Yii 和 Symfony 分别提供大约 2800 个扩展和 2830 个bundle。Laravel 以超越其他两者的三倍的扩展性,成为这方面最好的框架。
我们研究了框架之间的差异。 现在让我们看看他们的相似之处:
1.三个框架都是全栈 PHP 框架,并提供了从创建 Web 应用程序前端代码编写到后端数据检索的功能。
2.这些项目都是开源的,他们的源代码可以在 GitHub 上找到,每个人都可以轻松地贡献自己的代码:
3.这些框架有很好的文档,并得到了大型社区的支持。
4.它们各自支持 ORM(对象关系映射)。ORM 非常喜欢为应用程序编写面向对象的代码(OO code)。
5.用它们创建 Web 2.0 应用程序是安全和可靠的。
还是无法选择? 也许这些清单可以帮助你缩小选择范围:
在 Symfony 、Laravel 、Yii 三个PHP框架都是为开发人员提供全栈开发环境的优秀选项。我觉得 Laravel 是最大的赢家,并且仍然在不断地发展壮大。
不过,Symfony 和 Yii 都是优秀的框架。Symfony 比较成熟,并且拥有一个更大、更成熟的社区。Yii 是一个独特的,并能稳健、安全地完成工作的框架。
编译自: https://opensource.com