您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > php

PHP优秀框架Laravel和Yii大PK

时间:2022-07-15 11:44:13  来源:  作者:高可用架构
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项目实施经验,善于对内外部资源与风险实施管控,专注传播网络与信息安全知识与经验;持续以博文、专题和译文等形式,分享前沿技术与新知;经常以线上、线下等方式,开展信息安全类培训与授课。

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



Tags:Laravel   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
译者 | 陈峻Laravel 和 Yii 是当前两种针对 PHP 的优秀框架。它们在全球都有成熟的社区、以及大量的编程爱好者。本文为您全面比较 Laravel 和 Yii,并和您讨论如何根据具体项...【详细内容】
2022-07-15  Tags: Laravel  点击:(92)  评论:(0)  加入收藏
在应用程序开发的世界中,也存在相互匹配的情况。其中一个匹配是Laravel和Vue.JS——这两个最流行的web开发框架。让我们来看看是什么让这一组合如此富有成效吧! 什...【详细内容】
2022-06-14  Tags: Laravel  点击:(77)  评论:(0)  加入收藏
环境配置:系统:Linux语言:PHP框架:Laravel 5.8主要技术:Zizaco/Entrust扩展包,MySQL,PHP,Composer 扩展包名称:Zizaco/Entrust安装配置:// 1. 在项目根目录运行composer require ziza...【详细内容】
2021-02-05  Tags: Laravel  点击:(1014)  评论:(0)  加入收藏
使用laravel的数据库迁移功能进行表的创建,和迁移回滚之后,我们继续说说在设计中 表结构的更改之后的处理。以及如何为数据库填充一些伪数据作为测试。数据约束上一章说到数据...【详细内容】
2020-09-29  Tags: Laravel  点击:(210)  评论:(0)  加入收藏
使用过larave框架的朋友都知道laravel框架里面除了提供一些基本的功能(如控制器、视图、模型)之外,还有中间件、门面、契约等,这些东西是如何在laravel框架运用起来的呢?今天就...【详细内容】
2020-09-28  Tags: Laravel  点击:(126)  评论:(0)  加入收藏
我刚开始接触Laravel这个框架时,被官方文档搞得一头雾水,几天都没搭建起来运行环境(可能是自己太菜了哈哈,自信点把可能去掉)一、安装 Composer进入官网 getcomposer.org,点击down...【详细内容】
2020-09-18  Tags: Laravel  点击:(182)  评论:(0)  加入收藏
laravel已经内置了一套授权和权限分配的功能,我们不用从零开始设计,这方便了很多。但是, 因为集成在框架内的缘故,很多时候对于用户体系甚至有些陌生。本文通过一个简单的需求,判...【详细内容】
2020-08-26  Tags: Laravel  点击:(79)  评论:(0)  加入收藏
这篇文章主要给大家介绍了关于利用laravel搭建一个迷你博客的相关资料,文中将一步步的实现步骤通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟...【详细内容】
2020-08-18  Tags: Laravel  点击:(134)  评论:(0)  加入收藏
引言数据库操作是应用程序不可避免的绝大多数。难怪有些老程序员总是略带自嘲地说,“不就是个 curd 嘛,说的那么高深!” 的确,往简单了说,编程不过是增删改查数据库。高级程序员,...【详细内容】
2020-07-30  Tags: Laravel  点击:(107)  评论:(0)  加入收藏
引言在巩固了基础知识之后,我们把目标转向框架的学习。Laravel 是一个全球流行的框架,开发者和使用者都比较活跃,周边有许多库,和第三方资源均提供了支持。 今天说一下,如何在框...【详细内容】
2020-07-24  Tags: Laravel  点击:(218)  评论:(0)  加入收藏
▌简易百科推荐
前言Java 内存马固然是极好的,可我略微瞟了一眼PHP 的占有率,虽然从我上次关注 PHP 10年都过去了,PHP 却仍然是最为主流的服务端 Web 语言。所以,为什么没人做 PHP 的内存马研究...【详细内容】
2022-11-01  区块软件开发    Tags:PHP   点击:(7)  评论:(0)  加入收藏
概述php8 (php8 >= 8.1.0 ) 中新增了纤程特性,官方文档地址如下:https://www.php.net/manual/zh/language.fibers.php本文将讲解这个新特性的一些简单使用基本概念摘自官方文...【详细内容】
2022-10-18  思跃喵  今日头条  Tags:PHP8   点击:(20)  评论:(0)  加入收藏
前言:Unity3D,相信很多人都知道是用来做游戏的。网上也有很多这类视频的教程,我也试着学习过。但是当要实现多人实时对战的教例比较少,而用 PHP 来做 Unity3d 的服务器端的就更...【详细内容】
2022-10-13  北桥苏  今日头条  Tags:unity3D   点击:(16)  评论:(0)  加入收藏
php(2 部分系列) 1我用 50 行代码写了 twig2php的活动框架 docker-compose.yml此配置仅包含一个服务并公开一个端口以通过浏览器访问容器。这个文件就不用多说了。 version: &...【详细内容】
2022-09-26  qaseven   网易号  Tags:Php   点击:(28)  评论:(0)  加入收藏
大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的FastAdmin通用后台开发框架。运行环境 服务器宝塔面板 PHP 7.2 Mysql 5.6及以上版本 Linux Centos7以上P...【详细内容】
2022-09-24  web测评  今日头条  Tags:开发框架   点击:(37)  评论:(0)  加入收藏
PHP安全特性1-is_numeric()类型的转换缺陷 验证函数是否为数字的函数缺陷:当不是数字的字符串与数字互相比较,is_numeric()会自动的先把非数字型的数转换成数字,在进行比较。利用...【详细内容】
2022-09-20  网络安全菜鸟    Tags:PHP   点击:(11)  评论:(0)  加入收藏
今天讲一段情史,是关于世界上最好的编程语言PHP和Facebook的感情经历。 恋爱PHP能和Facebook谈恋爱,主要归功于创始人扎克伯格。小扎这个哈佛的学生,很不安分,鬼点子很多,很喜欢...【详细内容】
2022-09-19  码农翻身    Tags:PHP   点击:(34)  评论:(0)  加入收藏
CakePHP 是一个运用了诸如 ActiveRecord、Association Data Mapping、Front Controller 和 MVC(model–view–controller) 等著名设计模式的开源 Web 框架。CakePHP...【详细内容】
2022-08-30  新疆阿亮    Tags:CakePHP   点击:(67)  评论:(0)  加入收藏
0x01 前言最近很多家厂商都陆续开放了自己的Webshell检测引擎,并且公开接口,邀请众安全研究员参加尝试bypass检测引擎,并且给予奖励,我也参加了几场类似的活动,有ASRC的伏魔计划,...【详细内容】
2022-08-07  iHacking    Tags:PHP   点击:(76)  评论:(0)  加入收藏
1.用微信自带的接口生成一个零时二维码加上一个key 标识凭证微信公众号零时二维码接口2.用户使用微信扫描跳转到公众号页面时候触发事件推送,判断MsgType=》event(scan & subs...【详细内容】
2022-08-03  小白php程序员    Tags:php   点击:(75)  评论:(0)  加入收藏
站内最新
站内热门
站内头条