详解PHP的3种框架

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

模板引擎

模板引擎减少开发人员的工作量,它为写前端代码提供更好的功能。模板引擎提供了诸如自动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是一个独特的框架,它是强大的,安全的,并能完成工作。

原文来自:博客园/cherry0327

时间: 2024-10-15 11:25:52

详解PHP的3种框架的相关文章

轻松搞定高并发:详解Redis的五种数据类型及应用场景分析!

一.Redis基本概念介绍和特性 1.1 Redis基本概念介绍 1.Redis是远程的,有客户端和服务端,我们一般说的是服务端: 2.Redis是基于内存的,所以比基于硬盘的MySQL要快很多,但非常吃内存 3.Redis是非关系型数据库.本质上也是数据库,但MySQL关系型数据库存储时必须定义数据词典,而Redis则不需要. 1.2 Redis 和 Memcached比较 Redis数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

Java开发中的23种设计模式详解之三:11种行为型模式

本章是关于设计模式的最后一讲,会讲到第三种设计模式--行为型模式,共11种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式.这段时间一直在写关于设计模式的东西,终于写到一半了,写博文是个很费时间的东西,因为我得为读者负责,不论是图还是代码还是表述,都希望能尽量写清楚,以便读者理解,我想不论是我还是读者,都希望看到高质量的博文出来,从我本人出发,我会一直坚持下去,不断更新,源源动力来自于读者朋友们的不断支持,我会尽自己

详解location.href几种用法的区别【JS跳转】

一:提出问题 使用js的同学一定知道js的location.href的作用是什么,但是在js中关于location.href的用法究竟有哪几种,究竟有哪些区别,估计很多人都不知道了. 二:常见的几种形式 目前在开发中经常要用到的几种形式有: 1 self.location.href; 2 window.location.href; 3 this.location.href; 4 location.href; 5 parent.location.href; 6 top.location.href;

详解React 的几种条件渲染以及选择

对于一个展示页面来讲, 通常有好几种展示状态(以列表页为例): 数据为空, 空页面 取数据时发生错误, 错误页面 数据正常 加载状态 针对以上三种情况, react渲染列表的时候要正确判断并渲染出相应的视图, 也就是条件渲染. 不同于vue的v-if, v-show等框架提供的api, react的条件渲染都是js原生的再加上一点点的hack. 比如react文档提到的. if/else, && 和三目等等. 当然上面的都是常用的一些方法, 但是也存在着各种问题, 比如条件分支过多的的事时

详解listview的四种适配器模式

ListView是Android开发中比较常用的一个组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.比如说我们手机里的通讯录就使用到了ListView显示联系人信息.ListView同时也是所有Android UI控件中最为麻烦的控件,之所以麻烦就是因为它的各种的适配器特别麻烦. 创建ListView有两种方式: 1.直接创建ListView 2.让Activity继承ListActivity 列表的显示需要三个元素: 1.ListVeiw :用来展示列表的View. 2.适

Cisco QOS 知识详解第一篇 三种模型

作为一个努力在IT一线奋斗的人,励志做到以下几点: 搬的了机器,玩的了系统,精通了协议,敲得了代码. --谨以此让自己不断努力! ------------------------------------------------------------------------------------------------------------------------------------- QOS的三种模型 网络服务质量即QOS,在网络中实施QOS,有三种模型需要参考,用来指导在各种需求下,

Java开发中的23种设计模式详解之一:5种创建型模式

一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 其实还有两类:并发型模式和线程池模式.用一个图片来整体描述一下: 二.设计模式的六大原则 1.开闭原则(Open Clo

Activity详解四 activity四种加载模式

先看效果图: 1概述 Activity启动方式有四种,分别是: standard singleTop singleTask singleInstance 可以根据实际的需求为Activity设置对应的启动模式,从而可以避免创建大量重复的Activity等问题. 设置Activity的启动模式,只需要在AndroidManifest.xml里对应的<activity>标签设置android:launchMode属性,例如: <activity android:name=".A1&