PHP是世界上最受欢迎的编程语言之—。最近发布的PHP7令这种服务器的编程语言比以前变得更好,更稳定了。

PHP被广泛应用于重大的项目。例如Facebook就是使用PHP来维护和创建它们的内部系统的。WordPress使用PHP来驱动它的内部构件,得到的回报是超过59%的网站都在使用WordPress作为内容管理系统。目前,有82%的网站,它们的服务器端使用的编程语言就是 PHP。

本文将介绍三种最流行的PHP框架:Symfony, Laravel和Yii。将通过三种框架的比较,帮助你选择哪种框架有可能最符合你的需求。

 

为什么要选择PHP框架?

为什么要使用框架而不是原生PHP来开发你的应用程序?下面是使用框架的一些好处:

  • PHP框架令开发更快。例如,你不必写复杂的查询去检索数据库的数据,PHP框架提供CRUD操作(创建、阅读、更新和删除);
  • 框架使开发人员能够轻易地扩展系统;
  • 代码的维护比使用vanilla PHP应用更容易。应用程序的代码简洁,工作起来很方便;
  • MVC模式可以确保快速开发;
  • 框架更利于保护WEB的应用程序免受安全威胁;
  • Don’t Repeat Yourself (DRY) Principle(不要重复你自己原则)确保最小的代码能够发挥最大的作用。

以上这些明显的好处,我们不能忽略它们。即使原生PHP可以用来创建任何一个APP,但目前的开发标准要求工具和时间管理技巧都要符合市场要求。

如何选择PHP框架?

在选择一个框架时思考一下以下的问题:

  1. 这个框架的特色和功能是什么?它们是不是我所需要的?
  2. 这个框架的学习过程要多长?
  3. 它的稳定性如何?
  4. 这个框架是由核心团队开发和维护的吗?
  5. 这个框架可以提供长期支持吗?
  6. 这个框架有强大的社区支持吗?

Symfony, Laravel和Yii

在仔细研究技术细节之前,这里是三种框架的概述:

Symfony

Symfony是一套可重复使用的PHP组件,它允许开发者人员创建可扩展的,高效能的应用程序。它有30个组件可以选择,开发人员可以有足够的自由在RAD环境下进行试验和工作。Symfony API还允许使用第三方应用来方便集成,它可以与流行的前端框架,例如AngularJS一起使用。

很多流行的项目,包括DrupalphpBB,都使用了Symfony框架。 事实上,Laravel这个最流行的PHP框架是由Symfon建立的。

Laravel

Laravel被称为是“网络工程师的PHP框架”,它提供了一个出色的社区并赢得“最流行框架”的称号。(在Livecoding.tv上,有一个优秀的Laravel程序员,他就是Sfiskell。)

(Sfishell在直播中)

在2015年5月,Laravel宣布5.1版将提供长达两年的用户支持。2015年12月,5.2版发布。很多托管公司提供Laravel支持,并为Laravel的应用提供托管方案。可以浏览Built with Laravel这个网站上出色的样本项目。

Yii

Yii是在2008年由Qiang Xue创建的。Yii是一个安全,快速和高效的应用/网站开发框架。Yii采用Composer,是PHP的依赖管理工具,用来处理不同的依赖关系和安装。Yii也是最快速的PHP框架,这归因于延迟加载技术。

Yii另一个出色的功能是jQuery集成。集成使前端开发人员能够快速地接受框架。它使用脚手架生成代码。与Symfony相似,Yii也是利用组件来支持快速开发应用程序。

如何比较三种框架?

三种框架都很适合用来创建Web2.0应用程序,但每种框架的使用目的有所不同。我们看看它们具有哪些功能,以及它们之间的较量。

模板引擎

模板引擎减少开发人员的工作量,它为写前端代码提供更好的功能。模板引擎提供了诸如自动HTML转义和过滤功能,并填写由原生PHP留下的空白。

Symfony Twig 模板系统

Twig是PHP的现代模板系统。Symfony利用其优势,使开发人员能够编写干净、简洁的代码,而且它比原生PHP可以做得更多。例如,原生PHP写的代码:

<?php echo $var ?> <?php echo htmlspecialchars($var, ENT_QUOTES, 'UTF-8') ?>

Twig用以下代码可以做到同样的工作:

{{ var }} {{ var|escape }} {{ var|e }} {# shortcut to escape a variable #}

浏览Twig网站了解更多有关它的功能。

Laravel Blade模板系统

不像其它的模板系统,Blade让你在视图中使用PHP代码。另外,Blade具有零负荷应用程序的性能,因为它的视图文件必须使用.blade.php扩展文件名。在处理过程中所有在视图文件中的代码都被转换成原生PHP。

Yii默认模板系统

Yii不会默认使用任何第三方的模板系统,但这并不意味着它缺少模板系统支持。模板系统的选择取决于开发团队。推荐使用Twig和Smarty。Symfony使用Twig,所以如果你在过去已经用过Symfony,你可能需要用Twig来开发你的一个Yii项目。

这里没有明确的哪个框架更好。三种框架使用模板引擎以便写出更好的前端编码和维护。Yii的一个小优势是,框架没有预先定义的模板系统。

框架的不同点

每一个框架的创建都是不同的。Symfony用可重复使用的组件工作,它还提供了最佳的模块化。Symfony也利用模型和控制器来开发Web应用程序,在许多开发人员眼中,它可能看起来是迟钝的,但它是有作用的。另外,Symfony是模块化框构的一个很好例子。你可以用模块化的方式在你的项目中使用它提供的30个组件。

Yii采用MVC框架。(Symfony为MVC提供支持,可以在Is Symfony2 a MVC framework了解更多细节。)

Symfony可以用来快速开发复杂的项目。即使有争议说哪一个框架更有利于复杂的项目,Symfony相比其他框架,具有很出色处理复杂事物的能力。Yii也使用组件,但它并不是symfony那样的模块化。Laravel与其它两个框架相比,载它的模块化方式没有这么犀利。

如果你正在寻找一个模块化的框架,就选symfony吧,或者Laravel,Yii也是很不错的选择。

安装

这三个框架提供了多个安装程序。如果你使用的是用于处理软件包的Composer,那太好了,因为它们三个都可以通过Composer安装。

在symfony中, Composer的作用更为关键。组件处理的方法最好是用这个:Composer PHP dependency manager(Composer PHP依赖管理器)

还有其它方法安装各自的框架。例如,你可以使用简单的归档方法安装框架。安装后,Yii为你提供了一个Web应用程序和一个基本模板。Symfony 2还提供了一个演示程序来开始工作。

laravel也可以通过使用Composer创建项目或Laravel安装器来快速安装。查看Laravel installation guide了解更多Laravel安装指南。

快速开发

从公司或客户的角度来看,快速将应用程序推出市场,来满足消费者的需求和击败竞争对手是很重要的。Symfony脱颖而出,因为它是一个有着有力社区支持的强大框架。Laravel发展得很快,但仍有很长的路要走,才能被视为PHP开发的必然选择。另一方面,如果还没有任何PHP框架的知识,又想尽快上手,可以考虑Laravel。Laravel的学习过程简单,你会发现网上很多教程来帮助你上手。Yii将性能提升到一个新水平,并提供了代码脚手架以便更快地生成代码和开发。

性能

任何一个应用程序的性能,只有当它是使用关键数据的实时应用程序时才是重要的。有多少基于Web的应用程序依赖于高性能?不是很多,但框架的性能在许多项目中起着至关重要的作用。

社交网络是实时事件的一个主要例子。Jadson使用Yii2创建了一个移动社交网络。说到选择最好的框架来编写高性能的应用程序代码,Yii作为最快的PHP框架,成为突出的选择。

Laravel的性能是非常值得商榷的。它是最慢的,但这有什么关系呢?你可以在网上找到很多加速性能的资源,例如guide on GitHub,它可以加快你的Laravel应用程序。

数据库支持

Symfony 2提供更好的数据库支持。你可以使用一系列的数据库工作,包括NoSQL和DynamoDB。Yii和laravel在这方面也是有用的,但他们支持的数据库比symfony的少。每一个框架支持的数据库如表1所示。

社区和资源

对一个开源框架的寿命预测要看它的社区优势。三个框架都有稳固的社区,虽然symfony的可能会更成熟一点。社区是发展的,所以对社区未来动态的预测是具有挑战性的。

说到学习材料和文件,laravel最突出,虽然Symfony和Yii也不逊色:

扩展性

框架是可以使用扩展或包来扩展的结构,提高了它们的功能和范围。说到扩展,laravel是赢家。 Packalyst,它是laravel包的目录,提供超过9000个包。Yii和symfony则分别提供了约2800个扩展2830个包。Laravel是它们的3倍,因此从这方面来看,Laravel似乎是最好的框架。

相似点

我们已经介绍了框架之间的不同点。现在让我们来看看它们相似的地方:

  • 三种框架都是全栈的PHP开发框架,提供网络应用的创建功能,从前端代码的编写到后端数据检索。
  • 项目是开源的,其源代码可以在GitHub上找到,让任何人都能轻松做出贡献:
  • 该框架有很好的文档记录,并由一个大社区支持。
  • 它们都支持ORM(对象关系映射)。ORM在为应用程序写OO代码时备受欢迎。
  • 它们是强大的,安全的,可靠的,用来创建Web 2.0应用程序。

还在觉得困惑吗?下面这份清单也许可以帮你缩小选择范围:

Symfony:

  • 提供一个LTS版本
  • 带有负载功能
  • 是目前最稳定的框架
  • 是基于构件的框架,提供了丰富的模块化
  • 具有一个出色的社区,提供丰富的学习资源

 

Yii:

  • 自带Ajax支持
  • 十分适合用于开发实时应用程序,因为它的操作更快
  • 是高度可扩展的
  • 可准确无误地处理错误
  • 适合用来创建平静的Web服务
  • 具有一个出色的社区,提供丰富的学习资源

Laravel:

  • 是2015-2016年最流行的框架
  • 为设计者提供支持包管理
  • 出色完成单元测试
  • 提供丰富的包,用于扩展框架功能
  • 具有一个出色的社区,提供丰富的学习资源

结束语

在Symfony 、Laravel和Yii三者较量中,这三个PHP框架都是很好的选择,为开发人员提供了一个全栈开发环境。对我个人来说,Laravel更佳,它作为一颗新出现的“框架之星”,没有停下来的迹象。

不过,Symfony和Yii都是优秀的框架。Symfony是行之有效的,有一个更大、更成熟的社区。Yii是一个独特的框架,它是强大的,安全的,并能完成工作。

要想了解这些框架是如何工作的,可以访问Livecoding.tv。网站上的开发人员在使用Symfony, YiiLaravel来开发项目。他们在直播过程中还可以通过Skype与观众沟通。关注他们的直播,提出你的问题,并得到实时回复。

如何选择PHP框架?的更多相关文章

  1. 如何选择前端框架:ANGULAR VS EMBER VS REACT

    最近一段时间是令前端工程师们非常兴奋的时期,因为三大Web框架陆续发布新版本,让我们见识到了更强大的Web框架.Ember2.0在2个月之前已经发布,从1.0升级到2.0非常简单.几周之前React发 ...

  2. Robot Framework作者建议如何选择自动化测试框架

    本文摘自:InfoQ中文站http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest Robot Framework作者建议如 ...

  3. 前端 为什么我选择用框架而不是Jquery

    对于很多习惯用Jquery的前端甚至后端,都很不解,为什么不用Jquery而是框架.觉得框架学起来麻烦,成本高,今天我以我浅薄的知识来总结一下为什么前台开发选择用框架: 前台开发,主要的性能是卡在回流 ...

  4. 到底如何选择PHP框架?Yii、ThinkPHP、laravel、CI.

    如果你是为了工作和就业,你应该选择框架以工作为目标,看公司里面未来招聘中用的最多的是什么框架.很简单的判断方式 很多朋友都不知道如何去选择框架,选择框架的时候就会很纠结.到底该学什么框架,选择什么框架 ...

  5. 【转】Robot Framework作者建议如何选择自动化测试框架

    原文:http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest 软件自动化测试,作为手工测试的替代,越来越受到关注.Pekk ...

  6. 可供选择CSS框架

    在这里你有一个很酷的框架,收集创建的CSS布局. 如果你不喜欢框架,宁愿使用自己的手写代码以促进自己的发展,请跳过本篇文章. 我想有一个建设性的意见,那就是有选择的使用其优点避开其缺点. 就个人而言, ...

  7. 自动化测试===【转】Robot Framework作者建议如何选择自动化测试框架

    原文:http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest 软件自动化测试,作为手工测试的替代,越来越受到关注.Pekk ...

  8. APP开发选择什么框架好? 请看这里!

    背景 App的开发一般都需要满足Android和iOS两个系统环境,也就意味着一个App需要定制两套实现方案,造成开发成本和维护成本都很高.为了解决这个问题,最好的办法就是实现一套代码跨端运行,所以H ...

  9. im-chooser重新选择输入法框架在终端执行im-chooser命令

    CentOS 7安装图像桌面.Ibus拼音输入法一.图形桌面安装1.安装额外包yum源(extra package for Enterprise Linux) yum install epel-rel ...

随机推荐

  1. vmware里面的名词 vSphere、vCenter Server、ESXI、vSphere Client

    vmware里面的名词 vSphere.vCenter Server.ESXI.vSphere Client vSphere.vCenter Server.ESXI.vSphere Client VS ...

  2. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  3. eclipse 快捷键大全

    注:因eclipse版本.电脑配置等原因 有些快捷键可能导致不可用(遇到些许问题可在下方评论) [Ct rl+T] 搜索当前接口的实现类 1. [ALT +/]    此快捷键为用户编辑的好帮手,能为 ...

  4. RxJS + Redux + React = Amazing!(译二)

    今天,我将Youtube上的<RxJS + Redux + React = Amazing!>的后半部分翻译(+机译)了下来,以供国内的同学学习,英文听力好的同学可以直接看原版视频: ht ...

  5. Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...

  6. 【原】AFNetworking源码阅读(三)

    [原]AFNetworking源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇的话,主要是讲了如何通过构建一个request来生成一个data tas ...

  7. 前端学HTTP之Web主机托管

    前面的话 对内容资源的存储.协调以及管理的职责统称为Web主机托管.主机托管是Web服务器的主要功能之一.保存并提供内容,记录对内容的访问以及管理内容都离不开服务器.如果不想自行管理服务器所需的软硬件 ...

  8. 主成分分析(PCA)原理总结

    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一.在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用.一般我们提到降维最容易想到的算法就 ...

  9. Java 中获取类路径 classpath 的方法

    System.out.println("++++++++++++++++++++++++"); String path = System.getProperty("jav ...

  10. Forward+ Rendering Framework

    近几天啃各种新技术时又一个蛋疼的副产品...额,算是把AMD的Forward+ Sample抄了一遍吧. 其实个人感觉这个AMD大肆宣传的Forward+跟Intel很早之前提的Tiled-Based ...