译者|陈军如果你问任何一个经验丰富的Web应用程序开发人员,他们最喜欢的编程语言是什么,他们的大部分回答都会提到PHP。确实,PHP是一种应用广泛的通用脚本语言,特别适用于Web开发,并且可以嵌入到HTML中。据网站技术分析工具Builtwith统计,目前仍有3,090,319个实时网站仍在使用PHP。当然,在开发低延迟、高稳定性的大型项目时,开发者往往倾向于使用某种框架。其中,Laravel和Yii是目前PHP的两个优秀框架。他们在全球拥有成熟的社区,以及大量的编程爱好者。下面,小编就为大家全面对比一下Laravel和Yii,并根据具体项目和大家一起探讨如何在两者之间做出选择。1.Laravel和Yii到底是什么?Laravel是一个简单的PHP框架,通常用于基于Web或Web应用程序的开发,最初是作为Codeigniter的更好替代品而创建的。它以支持MVC、协作ORM系统、可靠性、模块化和简单的编程规则而闻名。总的来说,Laravel框架有以下几个关键特性:Artisan:Artisan是一个命令行工具,可以让你轻松创建模型、控件、调度任务以及运行各种自定义命令。Eloquent:Eloquent是对象关系映射(ORM)数据库的交互式框架。不同的数据库支持:Laravel为每一种当前可用的数据库格式提供了代码包。它通过允许迁移操作来确保数据库修改和版本控制。Blade模板引擎:它允许在视图中使用简单的PHP代码。为避免应用程序过载,一旦构建并缓存了视图,它们就会一直保留到再次更新为止。庞大的Laravel库:开发者可以在自己的应用程序中安全地使用数百个标准化的Laravel代码库。该框架的设计者还提供定期更新的官方文档以供开发人员广泛使用。Yii作为PRADO框架的继任者于2006年发布。作为一个可用于快速开发现代Web应用程序的开源PHP框架,它具有基于组件的架构和完整可靠的缓存支持。开发人员可以使用Yii框架构建各种Web应用程序,例如论坛、门户网站、内容管理系统、RESTful服务和电子商务网站。总的来说,Yii框架有以下几个主要特点:全面支持DBMS:Yii框架支持PostgreSQL、MySQL、SQLite、Oracle和其他DBMS。支持第三方模板引擎:Yii框架没有内置模板引擎支持,但可以使用第三方解决方案。强大的知识库:其官方文档和丰富的教程可以帮助开发者快速找到大多数问题的答案。自动代码生成:开发人员可以通过使用Gii扩展自动生成代码来显着加快编程过程。可见这两个框架都是非常好的Web开发框架。当然,它们也有本质的不同。二、Laravel和Yii的区别1、安装两个框架都可以运行在PHP5.4或更高版本上。然而,Laravel需要额外的扩展,例如:PHPJSON和MCryptPHP,它们已经内置在Yii中。或者,您可以通过下载zip文件并将其解压缩到Web应用程序可访问的文件夹来安装Yii。同时,你也可以使用Composer(一个PHP包管理工具)安装它并配置accesstoken。而对于Laravel,你可以使用LaravelInstaller或Composer来安装它。分数:Laravel1分:Yii1分2.基于场景的验证Laravel没有任何可用于执行基于场景的验证的代码包。在Yii框架中,用户可以使用各种请求参数来分配模型并对其进行验证。分数:Laravel1分:Yii2分3.客户端验证Laravel没有任何代码包来执行客户端验证。由于Yii提供开箱即用的JavaScript验证,它允许您只定义一组模型规则用于服务器端和客户端的验证。得分:Laravel1分:Yii3分4.路由功能Laravel虽然提供了资源路由(resourcerouting),但是需要在所有controller中为每个操作声明一个路由。Yii框架默认选择的是route-by-route的运行方式,所以不需要做重复的操作,只需要一个简单的route就可以了。得分:Laravel1分:Yii4分5.CRUD(Create,Retrieve,UpdateandDelete)生成很多项目都会使用管理面板来实现各种数据表的CRUD功能。作为Yii的专用扩展,Gii提供了一个基于Web的界面,可以自动生成各种常用的交互式代码片段。但是,Laravel默认不支持CRUD生成。得分:Laravel1分:Yii5分6.扩展支持通过不同的扩展,我们往往可以让原有的框架拥有高级的能力,以提升应用的性能或特性。虽然这两个框架都提供了一个支持扩展的库,但Laravel在这方面略有优势。目前,Yii有大约2,800个扩展。而Laravel已经能够支持大约9,000个扩展。分数:Laravel5分:Yii2分7.迁移您可能需要将您的应用程序迁移到新的数据库结构,而不会丢失旧结构中的数据。那么,这往往离不开一个便捷的数据库迁移框架。迁移相对容易,因为Laravel提供了一个播种器来帮助简化过程。并且Yii还提供了完整的迁移工具来支持高效的迁移过程。得分:Laravel3分:Yii6分8.测试众所周知,框架在用于web应用开发时,应该具备良好的测试能力,检测和调试各种操作中的错误。同样,这两个框架在测试方面也各有优缺点。Yii提供了开箱即用的PHPUnit和Codeception,而Laravel提供了PHPUnit,以及各种Symfony测试组件,如Httpkernel、DomCrawler、Browserkit等。得分:Laravel4分:Yii7分9.SecurityToday,security对于应用程序至关重要,毕竟任何攻击或漏洞都可能造成严重破坏并泄露宝贵的客户信息。因此,您需要一个框架来保护用户数据,同时为各种用户角色提供和管理适当的访问级别。Yii和Laravel都提供了诸如密码保护、身份验证、防止SQL注入、防止跨站点脚本(XSS)攻击和其他安全威胁等机制。然而,由于Yii提供了一个功能丰富且基于角色的访问控制系统,而Laravel需要第三方扩展,因此Yii更胜一筹。当然,我们并不是要在这里贬低Laravel的安全价值。得分:Laravel4分:Yii8分10.可用文档虽然Laravel提供了大量组织良好的技术文档,但由于信息量大,开发人员很难快速找到所需的信息。相比之下,Yii没有强大的文档,但它呈现信息的方式也没有陡峭的学习曲线。用户可以按照其文档轻松开始编程。当然,不可否认的是,Laravel在文档的丰富度上要比Yii强大很多。得分:Laravel8分:Yii5分3、对比结果从总分来看,Laravel和Yii势均力敌。毕竟每个框架都有自己的用例场景和特定的领域。总的来说,Laravel是一个被广泛关注的框架,其主要用户群是各类Web开发者。当然,Yii也拥有庞大的用户群,主要适合初级Web开发者、系统管理员等开发爱好者。就实际项目而言,如果你正在尝试构建大型Web应用程序或企业级应用程序,Laravel将是你的最佳选择。而如果你正在寻找一个简单的开发框架,目标是开发一个中小型的应用程序,那么Yii会更适合你。原文链接:https://dzone.com/articles/differences-between-laravel-and-yii译者介绍陈朱利安(JulianChen),51CTO社区编辑,拥有十余年IT项目实施经验,擅长内部对外实施资源和风险管控,重点传播网络和信息安全知识和经验;持续以博文、专题、翻译等形式分享前沿技术和新知识;经常在线上和线下开展信息安全培训和讲座。
