如何选择 PHP 框架

目前还没有读者喜欢这篇文章。
left and right brain

Opensource.com

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 框架

回答几个问题可以帮助您选择一个框架

  1. 框架的功能和特性是什么? (它是否提供我需要的?)
  2. 框架的学习曲线是什么?
  3. 框架的可扩展性如何?
  4. 框架是否由核心团队积极开发和维护?
  5. 框架是否提供长期支持(LTS 支持)?
  6. 框架是否有强大的社区支持?

Symfony、Laravel 和 Yii

在深入了解技术细节之前,先概述一下竞争者

Symfony

Symfony 是一组可重用的 PHP 组件,使开发人员能够创建可扩展的高性能应用程序。 有 30 个组件可供选择,开发人员可以完全自由地进行试验并在 RAD 环境中工作。 Symfony API 还支持与第三方应用程序轻松集成,并且可以与流行的前端框架(如 AngularJS)一起使用。

许多流行的项目,包括 DrupalphpBB,也使用 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 所示。

表 1
框架 Laravel Yii Symfony 2
数据库 Microsoft BI
MongoDB
MySQL
PostgreSQL
Redis
SQLite

 

Microsoft BI
MongoDB
MySQL
Oracle
PostgreSQL
SQLite

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上查看开发人员如何使用它们,该网站拥有SymfonyYiiLaravel的频道。开发人员也可以在流媒体会话期间通过聊天或Skype获得帮助。关注开发人员,提出您的问题,并获得实时解答。

其他资源

标签
Michael Livecoding.tv
Michael博士是位于洛杉矶的Education Ecosystem. Inc. (前身为Livecoding.tv)的创始人和首席执行官。 Education Ecosystem (LEDU) 是一个基于项目的学习平台,教授学生如何在编程、游戏开发、人工智能、网络安全、数据科学和区块链等领域构建真实的产品。

16条评论

Laravel +1

我会选择Laravel

好文章,谢谢

我认为Laravel是当今最好的PHP Web框架。它易于安装和使用。

我喜欢yii,但我使用lav已经很长时间了

我在工作中同时使用Symfony和Laravel。但Laravel拥有更大的社区。很棒的文章

我认为PHP在php 7发布后会更加流行。除了这些框架之外还有很多框架,但我仍然认为Laravel会在受欢迎程度方面击败所有其他框架...

会选择YII2。

Yiiiiiii 1.x ;D

什么,没有CakePHP吗? :)

说真的,这是一个非常可靠的框架,已经存在多年了。一年前发布的3.0版本也使用了Symfony,我发现ORM与Laravel的非常相似(几年前我看过的另一个框架)。对我来说,真正节省时间的是CLI代码生成器。

我喜欢Symfony :)

从技术上讲,Facebook不使用PHP。他们很久以前使用过PHP。他们一直在进行长期开发,以将php编译为c++。他们最新的(据我所知)是一个名为hiphop的JIT编译器。此外,Facebook还使用大量的c++和其他技术。说Facebook使用PHP来维护其内部系统甚至不是夸大其词,而是根本不正确。我喜欢PHP(也是),不要误会我的意思。但是要根据它们的优点来使用工具。在PHP上构建基础设施绝不是一个好主意。将其用于微服务,将其用于消费者应用程序。您可以将其用于不需要扩展的琐碎后端进程。但不要试图将PHP用作一站式解决方案。这会引起麻烦。它会减慢内部流程,并且会收回您最初通过使用php节省的开发时间,并且这将在您像Facebook那样之前很久发生。

也许我应该补充一点,我的声明对于大多数网站来说应该不是真正的问题。只是不要指望PHP在你处理数百万个请求,或者处理千兆字节或数十千兆字节的后台进程时成为你的朋友。尤其是当您必须处理依赖彼此流程的不同开发团队时。 :')

yii非常适合移动解决方案。 有用的文章。

我是一家创业公司,对于创业公司来说,Symfony的一个巨大优势在于,由于高度解耦,当您想用另一个软件或适配器彻底替换一块软件或适配器时,Symfony会有所帮助:例如,由于依赖注入容器,您可以用具有相同API但不同实现的应用程序服务替换。

很明显,Symfony提供了您需要的灵活性,可以实现非常短的上市时间,并通过为开发人员提供他们需要的指导和工具来关心您的服务领域,而不是他们通过更改未经测试的代码会引入多少错误来提高开发人员的意识和效率。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.