如果您向任何履历丰富的Web运用开拓职员讯问,什么是他们首选的编程措辞的话,他们的回答居多会提到PHP。的确,PHP是一种被广泛利用的通用脚本措辞,特殊适用于Web开拓,并且可以被嵌入到HTML中。
根据网站技能剖析工具Builtwith的统计,目前有3,090,319个实时网站仍在利用着PHP。当然,在开拓低延迟、高稳定性的大型项目时,开拓职员每每方向于利用某种框架。个中,Laravel和Yii是当前两种针对PHP的精良框架。它们在环球都有成熟的社区、以及大量的编程爱好者。下面,我为您全面比较Laravel和Yii,并和您谈论如何根据详细项目在两者中做出选择。
到底什么是Laravel和Yii?
Laravel是一个大略的PHP框架,常常被用于基于Web或Web运用的开拓,最初是作为Codeigniter的更好替代品而创建的。它以支持MVC、协同ORM系统、可靠性、模块化、以及大略的编程规则而有名。总的说来,Laravel框架具有如下关键特性:
Artisan:Artisan是一个命令行工具,可以让您轻松地创建模型、控件、操持任务、以及运行各种自定义的命令。Eloquent:Eloquent是一个工具关系映射(Object-Relational Mapping,ORM)型数据库的交互式框架。不同的数据库支持:Laravel为当前可访问的每一种数据库格式供应了代码包。它通过许可迁移操作,来担保数据库的修正和版本掌握。Blade Template Engine:它许可在视图中利用大略的PHP代码。为了避免运用的过载,视图一旦被构建和缓存,就会被保持,直至它们被再次更新。Vast Laravel Libraries:开拓职员可以在自己的运用程序中,安全地利用数百个标准化的Laravel代码库。该框架的设计者还供应了定期更新的官方文档,以便开拓者进行广泛地利用。Yii是2006年作为PRADO框架的继续者被发布的。作为一个可被用于快速开拓当代化Web运用的开源式PHP框架,它具有基于组件的架构和完全、可靠的缓存支持。开拓职员可以利用Yii框架,去构建诸如:论坛、门户、内容管理系统、RESTful做事、以及电商网站等各种Web运用。总的说来,Yii框架具有如下关键特性:
全面支持DBMS:Yii框架支持PostgreSQL、MySQL、SQLite、Oracle、以及其他DBMS。
支持第三方模板引擎:Yii框架没有内置的模板引擎支持,但是可以利用第三方的办理方案。
强大的知识库:其官方文档和丰富的教程可以帮助开拓职员快速地找到大部分问题的答案。
自动化代码天生:开拓职员可以通过利用Gii的扩展,来自动天生代码,从而显著地加快编程的进程。
可见,这两个框架都是非常棒的Web开拓的框架。当然,它们也有着实质上的不同。这两种框架都可以运行在PHP 5.4或更高的版本上。不过,Laravel须要诸如:PHP JSON和MCrypt PHP等额外的扩展,而Yii已经内置了它们。此外,您可以通过下载压缩文件,并将其解压缩到Web运用可以拿到的文件夹中,来安装Yii。同时,您还可以利用Composer(一种PHP 包管理工具 )来安装它,并配置访问令牌。而对付Laravel来说,您可以利用Laravel Installer或Composer来安装它。Laravel没有任何可用于实行基于场景验证的代码包。而在Yii框架中,用户可以利用各种要求参数来分配模型,并对其进行验证。Laravel并没有任何代码包可实行客户真个验证。而Yii由于供应了开箱即用的JavaScript验证,因此它许可您通过只定义一组模型规则,以用于在做事器端和客户端进行验证。Laravel虽然供应了资源路由(resource routing),但是您须要为所有掌握器中的每一项操作,去声明一条路由。而Yii框架的默认选择便是逐个路由操作的模式,因此您无需进行反复操作,仅凭一个大略的路由即可。5.CRUD(增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete))的天生许多项目会利用管理面板,来实现各种数据表的CRUD功能。而作为Yii中的一个专用扩展,Gii供应了一个基于Web的界面,可以自动天生各种常用的交互式代码片段。不过Laravel并不能默认支持CRUD的天生。通过不同的扩展,我们每每能够让原有的框架,具有增强运用性能或特性的高等能力。虽然这两种框架都供应了受支持的扩展库,但是Laravel在此方面略显上风。目前,Yii有大约2,800个扩展。而Laravel已经能够支持大约9,000个扩展了。您可能须要将运用迁移到新的数据库构造中,而不想丢失旧的构造中的数据。那么,这每每离不开便利的数据库迁移框架。由于Laravel供应了seeder来帮忙简化该过程,因此其迁移操作相比拟较随意马虎。而Yii也供应了一个完全的迁移工具,来支持有效的迁移过程。众所周知,在被用于Web运用的开拓时,框架应该具有良好的测试能力,以检测和调试各项操作中的缺点。同样,这两个框架在测试方面也是各有千秋。Yii供应了开箱即用的PHPUnit和Codeception,而Laravel供应了PHPUnit、以及诸如Httpkernel、DomCrawler、Browserkit等各种Symfony测试组件。如今,安全性对付运用程序来说已是至关主要的了,毕竟任何攻击或漏洞都可能造成严重的毁坏,进而透露有代价的客户信息。因此,您须要通过框架,来保护用户数据的同时,为各种用户角色供应和管理适当的访问级别。Yii和Laravel都供应了诸如:密码保护、身份验证、防止SQL注入、预防跨站点脚本(XSS)攻击、以及其他安全威胁机制。不过,由于Yii供应了功能丰富且基于角色的访问掌握系统,而Laravel则须要第三方的扩展,因此Yii又更胜一筹。当然,我们在此并没有贬低Laravel的安全性代价的意思。Laravel虽然供应了大量条理性强且具有技能含量的文档,然而由于信息量过大,开拓职员很难快速地找到所要的信息。比较之下,Yii虽然没有强大的文档,但是在供应信息的办法上,并不存在陡峭的学习曲线。用户可以按照其文档指引,轻松地开始编程事情。当然,不可否认的是,就文档的丰富程度而言,Laravel要比Yii强大得多。从综合评分来看,Laravel和Yii可谓半斤八两、不分伯仲。毕竟每一种框架都有着适宜自己的用例场景和详细领域。总的说来,Laravel是一个广受专注的框架,其紧张用户群体是各种Web开拓职员。当然,Yii也拥有不小的用户群,它紧张适宜那些初学者级别的Web开拓职员、系统管理员、以及其他开拓爱好者。就实际项目而言,如果您正在考试测验着构建大型的Web运用或企业级运用的话,Laravel将是您的最佳选择。而如果您正在探求一个大略的开拓框架,且目标是开拓一个中小型运用的话,那么Yii会更加适宜您。原文链接:
https://dzone.com/articles/differences-between-laravel-and-yii
陈峻 (Julian Chen),51CTO社区编辑,具有十多年的IT项目履行履历,长于对内外部资源与风险履行管控,专注传播网络与信息安全知识与履历;持续以博文、专题和译文等形式,分享前沿技能与新知;常常以线上、线下等办法,开展信息安全类培训与授课。本文由高可用架构翻译。技能原创及架构实践文章,欢迎通过公众年夜众号菜单「联系我们」进行投稿。