我是靠谱客的博主 激动画板,最近开发中收集的这篇文章主要介绍两个热门的 PHP 框架 Symfony vs Laravel 详细分析对比,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

PHP 是专注于 Web 开发的伟大且现代化的编程语言。大约 80% 的 Web 应用程序都是用 PHP 驱动的,从零开始对每个项目进行编码是不现实的,很多时候,Web 开发人员会利用各种框架和工具来加快开发速度。例如: Yii、Phalcon、Slim、或 CodeIgniter… ,但我们今天对两个 PHP 框架进行比较,即 Symfony VS Laravel。

总而言之,使用 PHP 框架的一些优点:

  • 更快的开发
  • 有组织和可复用的代码
  • Web 应用程序的可扩展性
  • 视图层和逻辑层的分离(MVC 模式下)
  • 相关的实践和工具

根据调查和最近五年(2012-2017)的 Google 趋势,Laravel 毫无疑问已经成为最流行的框架。 Symfony , 使用量第二的框架,支持更大的项目像 Drupal CMS , 并且奇迹般地支持 Laravel。

file

接下来我们来看一下 Symfony 与 Laravel 的各项信息与我们开发项目需要在意与了解的信息。我们比较一下这两框架的的基本信息。

对比项SymfonyLaravel
出版发行时间 (年)20112011
当前版本3.35.4
LTS++
License (Free for commercial use)MIT LicenseMIT License
供该框架使用的包量7,50016,900
基于该项目做的开源项目量25,30076,200
该项目在 StackOverflow 上的提问数量51,50067,900
Github stars ratings14,9007,800
贡献人数1,4001,400

这段译文的数据似乎已过时,译者只针对了版本,Star, Contributions 做了查阅,随着时间的推移,数值可能会有变化,请点击以下链接自行查看。
( Laravel , Symfony )

总体介绍

Symfony

法国 Sensio Labs 公司的 Symfony 框架提供了大量可复用的组件,库和包。Web 开发者可以使用 Symfony 来完成如对象配置,认证,模板等任务。由于自带了很多特性,所以它熟悉起来也不是那么容易。从结构上看,它是一个灵活的全栈框架,使用 Twig 作为模板引擎。

Laravel

使得 Laravel 框架尤其伟大的是它广泛和活跃的社区,以及大量文档和教程对它各方面提供的支持。除了大量特性和『快速』构建 Web 的能力外,它拥有自己的模板引擎 —— Blade,和一个 PHP 的微框架 —— Lumen,用于开发 API 和其他微服务。可以查看 Laravel 社区的视频介绍。

小结

当然,两个框架都有共同之处。它们都使用 PHP 语言,在操作系统方面都跨平台,都是多用户和多语言内容。Symfony 和 Laravel 的接口都采用 MVC (model-view-controller)模式,支持文本搜索以及 scaffolding.

接下来,让我进入 Laravel 和 Symfony 的特性比较。

代码结构

Symfony 由可复用的组件组成,并提供更好的模块化。尽管这两个框架都使用 MVC 架构来开发 Web 应用程序,但 Symfony 对于复杂项目来说是更好的选择。人们可以以模块化的方式为一个项目制作大量的组件,使开发更加快速。

Symfony 与 Laravel 不同的是模板引擎。Symfony 是 Twig 而 Laravel 是 Blade 。从代码复用性方面来看, Blade 更具有优势。因为不用像 Twig 中一样两次定义相同的函数。

参数SymfonyLaravel
设计工厂模式,组合模式,查询生成器,享元模式,观察者,依赖注入,数据映射建造者模式,工厂,资源库模式,策略模式,提供者,Facade ,动态记录,依赖注入
兼容 REST API+ (需要 FOSRestBundle)+
脚手架++
多语言++
MVC++
HTML 模板引擎TwigBlade
通过 composer 安装++
PHP 规范建议++
ORM++
PhpStorm 插件及支持++
数据库和存储驱动程序支持++
全文检索+ ( ElasticSearch )+ ( ElasticSearch)
持续集成和测试--PHPUnit

Laravel 和 Symfony 都暗含了用于数据转换的对象关系映射( ORM )技术。两个框架多可以多种方法来安装,令开发者欣喜的是,这两个框架皆可通过 Composer 进行安装。

Continuous integration (CI)

Every time as there are changes to the code, a review is required, along with certain tests and re-configuration. CI (continuous integration) is a practice that automates such tasks aimed at errors at early stages. There are various continuous integration servers and tools within PHP environment, so let's see how our frameworks support CI services. This is round 2 of our small Symfony vs Laravel contest.

CI ServiceSymfonyLaravelComments
Travis Ci++Works through Git and is not dependent on any framework.
Style CI++Works through Git and has presets for both Symfony and Laravel.
Drone++Works through Git and is not dependent on any framework.
Codeship++Supports all popular PHP frameworks, works through Git, valid parameters needed.
Circle CI++Works with all frameworks, has documentation and PHP Laravel demo.
Jenkins++Works through Git, independent of any framework, has Laravel template.

While Jenkins seems to be quite a popular CI server, you can find self-hosted CI packages from Laravel and Symfony. Regarding database support, Symfony is considered to be a winner (NoSQL, Dynamodb, and more), and Laravel has less in its pocket.

性能和可扩展性

Symfony 和 Laravel 都缓存视图,而 Symfony 默认也缓存了源码。还记得 Laravel 是用 Symfony 构建的有趣事实吗?更有意思的是, 当 Symfony 在缓存源码的时候,Laravel 运行得更快。性能提升了不少! 顺便一提, 一个使用 Laravel 的网站的平均加载时间大约是 60 毫秒,而一个 Symfony 的网站大约是 250 毫秒。

测试用例

为了证明我们以上的分析,同时为了对比下 Symfony 和 Laravel 的性能,我们决定创建一个测试的 Web 应用。一个简单的单页应用,每个框架打开它都只需要一个动作。

这次任务的目标是:

  • 从数据库取 1,000 条记录(每条都有唯一的名称,价格和库存)
  • 为他们创建 1,000 条订单
  • 更新数据库里的库存量
  • 计算订单的总价

我们做了加载测试的模拟(使用 Apache 基准)。用为物联网提供支持的最大的两个 web 服务器 —— Apache 和 Nginx。测试结果如下表格:

测试项Symfony (秒)Laravel (秒)
Apache(10 个请求,1 个用户)15.356.50
Apache(1 000 个请求,10 个用户)638.56202.66
NginX(10 个请求,1 个用户)7.536.44
NginX(1 000 个请求,10 个用户)658.73211.85

文档与学习曲线

在学习资料和文档方面,Laravel 远超 Symfony。Laravel 的引导和进阶视频(例如:Laracasts)覆盖了由浅入深的各个部分,且在 Laravel Github docs 上但资料范围广泛。 Symfony documentation 也描述了其在组件,包,服务容器等方面但内容。

方面SymfonyLaravel
学习曲线
安装复杂度
事件 / 通信++
文档简陋文本与视频
鉴权+即将到来

大量 Web 开发者争论说,Symfony 的学习曲线比 Laravel 要高一点(高很多)。Laravel 感觉更直观切更适合构建后端 Web 项目,且更契合类似 Angular 之类的前端 JavaScript 框架。

Symfony vs Laravel: 总结

坦率的讲,laravel 最近几个月发展势头强劲。它更适合用于那种投入资源更少但发布更快的大型 web 项目。与此同时,Symfony 更适合构建企业级的 web 项目,但是也要求开发者拥有更高级的技能。

Laravel 是 PHP 生态系统中最强有力的竞争者,因为它具备构建现代化 web 应用的必备特性。

Laravel 的创始人是 Taylor Otwell。

总结一下,Symfony 的主要优点是:

  • 多种扩展选项
  • 比大多数 PHP 框架快
  • 适应性和最佳性能(以 HTTP 为中心的请求 / 响应)
  • 可复用组件节约时间和节省成本

而 Laravel 框架的主要优点则是:

  • 高级的查询构造器机制
  • 数据的无痛迁移与整体管理
  • 自动加载能力(无需手动维护)
  • 更简单的认证机制
  • 使用事件对象原则来代替事件字符串处理程序的新事件。

选哪一个决定权在你手中。

最后

以上就是激动画板为你收集整理的两个热门的 PHP 框架 Symfony vs Laravel 详细分析对比的全部内容,希望文章能够帮你解决两个热门的 PHP 框架 Symfony vs Laravel 详细分析对比所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部