整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

PHP优秀框架Laravel和Yii大PK

PHP优秀框架Laravel和Yii大PK

译者 | 陈峻

Laravel 和 Yii 是当前两种针对 PHP 的优秀框架。它们在全球都有成熟的社区、以及大量的编程爱好者。本文为您全面比较 Laravel 和 Yii,并和您讨论如何根据具体项目在两者中做出选择。


如果您向任何经验丰富的Web应用开发人员询问,什么是他们首选的编程语言的话,他们的回答居多会提到PHP。的确,PHP是一种被广泛使用的通用脚本语言,特别适用于Web开发,并且可以被嵌入到HTML中。


根据网站技术分析工具Builtwith的统计,目前有3,090,319个实时网站仍在使用着PHP。当然,在开发低延迟、高稳定性的大型项目时,开发人员往往倾向于使用某种框架。其中,Laravel和Yii是当前两种针对PHP的优秀框架。它们在全球都有成熟的社区、以及大量的编程爱好者。下面,我为您全面比较Laravel和Yii,并和您讨论如何根据具体项目在两者中做出选择。




PART 01

到底什么是Laravel和Yii?




Laravel是一个简单的PHP框架,经常被用于基于Web或Web应用的开发,最初是作为Codeigniter的更好替代品而创建的。它以支持MVC、协同ORM系统、可靠性、模块化、以及简单的编程规则而闻名。总的说来,Laravel框架具有如下关键特性:


  1. Artisan:Artisan是一个命令行工具,可以让您轻松地创建模型、控件、计划任务、以及运行各种自定义的命令。
  2. Eloquent:Eloquent是一个对象关系映射(Object-Relational Mapping,ORM)型数据库的交互式框架。
  3. 不同的数据库支持:Laravel为当前可访问的每一种数据库格式提供了代码包。它通过允许迁移操作,来保证数据库的修改和版本控制。
  4. Blade Template Engine:它允许在视图中使用简单的PHP代码。为了避免应用的过载,视图一旦被构建和缓存,就会被保持,直至它们被再次更新。
  5. Vast Laravel Libraries:开发人员可以在自己的应用程序中,安全地使用数百个标准化的Laravel代码库。该框架的设计者还提供了定期更新的官方文档,以便开发者进行广泛地使用。

Yii是2006年作为PRADO框架的继承者被发布的。作为一个可被用于快速开发现代化Web应用的开源式PHP框架,它具有基于组件的架构和完整、可靠的缓存支持。开发人员可以使用Yii框架,去构建诸如:论坛、门户、内容管理系统、RESTful服务、以及电商网站等各种Web应用。总的说来,Yii框架具有如下关键特性:

  1. 全面支持DBMS:Yii框架支持PostgreSQL、MySQL、SQLite、Oracle、以及其他DBMS。

  2. 支持第三方模板引擎:Yii框架没有内置的模板引擎支持,但是可以使用第三方的解决方案。

  3. 强大的知识库:其官方文档和丰富的教程可以帮助开发人员快速地找到大部分问题的答案。

  4. 自动化代码生成:开发人员可以通过使用Gii的扩展,来自动生成代码,从而显著地加快编程的进程。


可见,这两个框架都是非常棒的Web开发的框架。当然,它们也有着本质上的不同。



PART 02

Laravel与Yii之间的不同之处




1.安装

这两种框架都可以运行在PHP 5.4或更高的版本上。不过,Laravel需要诸如:PHP JSON和MCrypt PHP等额外的扩展,而Yii已经内置了它们。此外,您可以通过下载压缩文件,并将其解压缩到Web应用可以拿到的文件夹中,来安装Yii。同时,您还可以使用Composer(一种PHP 包管理工具 )来安装它,并配置访问令牌。而对于Laravel来说,您可以使用Laravel Installer或Composer来安装它。

得分:Laravel得1分:Yii得1分

2.基于场景的验证

Laravel没有任何可用于执行基于场景验证的代码包。而在Yii框架中,用户可以使用各种请求参数来分配模型,并对其进行验证。

得分:Laravel得1分:Yii得2分

3.客户端验证

Laravel并没有任何代码包可执行客户端的验证。而Yii由于提供了开箱即用的JavaScript验证,因此它允许您通过只定义一组模型规则,以用于在服务器端和客户端进行验证。

得分:Laravel得1分:Yii得3分

4.路由功能

Laravel虽然提供了资源路由(resource routing),但是您需要为所有控制器中的每一项操作,去声明一条路由。而Yii框架的默认选择便是逐个路由操作的模式,因此您无需进行反复操作,仅凭一个简单的路由即可。

得分:Laravel得1分:Yii得4分

5.CRUD(增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete))的生成

许多项目会使用管理面板,来实现各种数据表的CRUD功能。而作为Yii中的一个专用扩展,Gii提供了一个基于Web的界面,可以自动生成各种常用的交互式代码片段。不过Laravel并不能默认支持CRUD的生成。

得分:Laravel得1分:Yii得5分

6.扩展支持

通过不同的扩展,我们往往能够让原有的框架,具有增强应用性能或特性的高级能力。虽然这两种框架都提供了受支持的扩展库,但是Laravel在此方面略显优势。目前,Yii有大约2,800个扩展。而Laravel已经能够支持大约9,000个扩展了。

得分:Laravel得5分:Yii得2分

7.迁移

您可能需要将应用迁移到新的数据库结构中,而不想丢失旧的结构中的数据。那么,这往往离不开便利的数据库迁移框架。由于Laravel提供了seeder来协助简化该过程,因此其迁移操作相对比较容易。而Yii也提供了一个完整的迁移工具,来支持有效的迁移过程。

得分:Laravel得3分:Yii得6分

8.测试

众所周知,在被用于Web应用的开发时,框架应当具有良好的测试能力,以检测和调试各项操作中的错误。同样,这两个框架在测试方面也是各有千秋。Yii提供了开箱即用的PHPUnit和Codeception,而Laravel提供了PHPUnit、以及诸如Httpkernel、DomCrawler、Browserkit等各种Symfony测试组件。

得分:Laravel得4分:Yii得7分

9.安全

如今,安全性对于应用程序来说已是至关重要的了,毕竟任何攻击或漏洞都可能造成严重的破坏,进而泄露有价值的客户信息。因此,您需要通过框架,来保护用户数据的同时,为各种用户角色提供和管理适当的访问级别。Yii和Laravel都提供了诸如:密码保护、身份验证、防止SQL注入、预防跨站点脚本(XSS)攻击、以及其他安全威胁机制。不过,由于Yii提供了功能丰富且基于角色的访问控制系统,而Laravel则需要第三方的扩展,因此Yii又更胜一筹。当然,我们在此并没有贬低Laravel的安全性价值的意思。

得分:Laravel得4分:Yii得8分

10.可用的文档

Laravel虽然提供了大量条理性强且具有技术含量的文档,然而由于信息量过大,开发人员很难快速地找到所要的信息。相比之下,Yii虽然没有强大的文档,但是在提供信息的方式上,并不存在陡峭的学习曲线。用户可以按照其文档指引,轻松地开始编程工作。当然,不可否认的是,就文档的丰富程度而言,Laravel要比Yii强大得多。

得分:Laravel得8分:Yii得5分



PART 03

对比结果




从综合评分来看,Laravel和Yii可谓势均力敌、不分伯仲。毕竟每一种框架都有着适合自己的用例场景和具体领域。总的说来,Laravel是一个广受专注的框架,其主要用户群体是各类Web开发人员。当然,Yii也拥有不小的用户群,它主要适合那些初学者级别的Web开发人员、系统管理员、以及其他开发爱好者。

就实际项目而言,如果您正在尝试着构建大型的Web应用或企业级应用的话,Laravel将是您的最佳选择。而如果您正在寻找一个简单的开发框架,且目标是开发一个中小型应用的话,那么Yii会更加适合您。

原文链接:

https://dzone.com/articles/differences-between-laravel-and-yii




译者介绍

陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。


本文由高可用架构翻译。技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。


高可用架构
改变互联网的构建方式

见即所得,不是很熟悉这个词吗?所见即所得代表什么,你看到的就是你得到这通常意味着一个编辑应用程序使用,以说明正在编辑的内容将完全一样的最终结果。与其他文本编辑器相比,“所见即所得” 文本编辑器非常友好。

它指已操作的软件或应用程序所拥有的功能,以及它们具有的许多其他功能。在使用中,此文本编辑器不需要像其他文本编辑器中那样编写语法,因为它配备了图标,只需要单击将要使用并自动格式化的图标之一即可。

此外,该文本编辑器还具有其他优势,例如能够显示一页文本,与图形,电子表格集成,在一个文档中显示照片,自动更正,超媒体,超文本等等。下面是一些用于网页的所见即所得文本编辑器:

1. CKEditor

CKEditor是一个HTML 文本编辑器,用于并旨在帮助您创建和管理内容布局。该文本编辑器中有许多完整的功能,如可以从Microsoft Word移动,还有额外的部件或工具,能够拖动和下降图片和上传文件,以及更多。

2. TinyMCE


TinyMCE是一个基于Javascript的独立Web平台,该文本编辑器根据LGPL许可作为开源应用程序发布。该文本编辑器旨在与JavaScript 库(例如React,Vue.js,AngularJS)和内容管理系统(例如Joomla和WordPress)轻松集成。另外,一个文本编辑器它还具有许多完整功能,包括4个软件包,其中Community是免费的,Premium,Pro和Enterprice是收费的。相对而言Community实际上非常完整,但是没有上传图像的功能。

3. Summernote

Summernote是一个非常简单且免费的文本编辑器。该文本编辑器使用base64编码,因此它不仅可以用于编辑文本,而且还可以直接上传图像,而无需进行任何图像处理。该文本编辑器由jQuery和Bootstrap组成,这是一个简单的UI,因此你可以更轻松地自定义外观或添加和删除工具栏。

4. Froala

Froala是HTML WYSIWYG 编辑器,它易于集成且易于使用,而无需键入大量代码。此插件需要jQuery 1.11.0或更高版本以及Font Awesome 4.4.0。该插件提供了用于PHP,Node.JS,.NET,Java和Python的服务器端SDK。该插件有4种许可,分别是:单个网站许可,开发者许可,商业许可和OEM许可。这个插件还有一个带有多个开发框架的连接器,例如:CakePHP,Joomla,Symfony,Yii,Django,Ruby on Rails,AngularJS,Meteor。

5.Redactor

Redactor是一个内容编辑器,可提供流畅,整洁,灵活的设计,并为其用户提供无限的支持。该内容编辑器与MODX紧密集成,提供简单的用户界面,并配有清晰易懂的图标,调制解调器和功能。可以根据需要激活或停用可用的高级功能,以便它可以控制用户活动。

6.Quilljs

Quilljs是100%免费的文本编辑器,它看起来简单而优雅。该文本编辑器提供了一种配置,你可以在其中自定义外观以及添加和删除工具栏。该文本编辑器也受API驱动,因此可以使用JSON作为其输入和输出来始终如一地确定性地工作。此外,此文本编辑器是跨平台的,因此它支持台式机,平板电脑或移动设备上的所有现代浏览器。

Yii框架学习】

介绍、安装部署框架、商城模板与yii结合、MVC

Php框架:cakephp CI(codeIgniter) symfony TP(thinkphp) zendframework(官方) Yii 等等,还有许多叫不上名字的框架。

Yii:高性能框架、代码重用性发挥到了极致、惰性加载框架、速度非常快

缓存、登录组件、助手(小物件,灵活创建表单,常见html代码)、日志组件等等。

适合开发大型web应用系统

【yii框架部署】

我们需要创建自己的应用系统

Cms 内容管理系统

Shop商城系统

Office办公系统

Crm客户关系管理系统

开始访问我们的应用系统。

【yii在什么地方用的多】

框架:dedecms ecshop crm

Dedecms是内容管理系统的框架

Ecshop是做商城网站的框架

Crm是做客户关系管理系统的框架

以上3个框架都是“专门”针对具体领域的框架,这样的框架不灵活,死板。

Yii框架是通用的框架,一般适合客户需求比较灵活、比较花样多,比较复杂的地方。

Yii框架设计模式是主流MVC。

Yii框架是一个纯OOP面向对象框架。

【商城模板与Yii框架结合】

Yii访问需要走路由,设置好路由就会找到对应的控制器和方法

路由:http://web.0507shop.com/index.php?r=site/index

将样式、图片、js静态资源集成到系统里边

Css样式:/assets/default/css/

图片:/assets/default/img

Js: /assets/js/

静态资源目录统一放入系统常量里边,方便调用。

/protected/config/constants.php

用户登录模板与Yii框架整合:

1. 创建UserController控制器

2. 创建视图views/user/login.php

3. 控制器调用视图$this->renderPatial();

4. 引入css和图片,将样式目录与图片目录放入常量,统一调用。

【路由】

在框架里边我们通过路由获得控制器和方法

我们有了控制器的方法,就可以进一步与视图或模型进行交互

http://网址/index.php?r=控制器/方法

【商城其他页面与Yii结合】

事件

Ctrl+j

今晚主要任务 : 商城前台模板 与 Yii结合

1, Yii框架部署起来(根据自己情况搭建虚拟主机,也可以使用localhost)

2, 控制器和视图理解好

控制器:UserController (名字Controller)

方法: actionLogin (action名字)

Views/ 下边有许多目录,目录原则是:每个控制器名字在views下都有对应名字的目录存在,里边存放具体模板文件

3. 理解好常量文件constant.php(样式目录和图片目录定义)

4. 商城网站与Yii框架结合制作出效果(首页、登录、注册、商品列表、商品详细)

Controller控制器

view视图

Model模型

MVC设计模式