共计 3283 个字符,预计需要花费 9 分钟才能阅读完成。
导读 | Laravel 和 Yii 是当前两种针对 PHP 的优秀框架。它们在全球都有成熟的社区、以及大量的编程爱好者。本文为您全面比较 Laravel 和 Yii,并和您讨论如何根据具体项目在两者中做出选择。 |
如果您向任何经验丰富的 Web 应用开发人员询问,什么是他们首选的编程语言的话,他们的回答居多会提到 PHP。的确,PHP 是一种被广泛使用的通用脚本语言,特别适用于 Web 开发,并且可以被嵌入到 HTML 中。
根据网站技术分析工具 Builtwith 的统计,目前有 3,090,319 个实时网站仍在使用着 PHP。当然,在开发低延迟、高稳定性的大型项目时,开发人员往往倾向于使用某种框架。其中,Laravel 和 Yii 是当前两种针对 PHP 的优秀框架。它们在全球都有成熟的社区、以及大量的编程爱好者。下面,我为您全面比较 Laravel 和 Yii,并和您讨论如何根据具体项目在两者中做出选择。
Laravel 是一个简单的 PHP 框架,经常被用于基于 Web 或 Web 应用的开发,最初是作为 Codeigniter 的更好替代品而创建的。它以支持 MVC、协同 ORM 系统、可靠性、模块化、以及简单的编程规则而闻名。总的说来,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 得 1 分:Yii 得 1 分
Laravel 没有任何可用于执行基于场景验证的代码包。而在 Yii 框架中,用户可以使用各种请求参数来分配模型,并对其进行验证。
得分:Laravel 得 1 分:Yii 得 2 分
Laravel 并没有任何代码包可执行客户端的验证。而 Yii 由于提供了开箱即用的 JavaScript 验证,因此它允许您通过只定义一组模型规则,以用于在服务器端和客户端进行验证。
得分:Laravel 得 1 分:Yii 得 3 分
Laravel 虽然提供了资源路由(resource routing),但是您需要为所有控制器中的每一项操作,去声明一条路由。而 Yii 框架的默认选择便是逐个路由操作的模式,因此您无需进行反复操作,仅凭一个简单的路由即可。
得分:Laravel 得 1 分:Yii 得 4 分
许多项目会使用管理面板,来实现各种数据表的 CRUD 功能。而作为 Yii 中的一个专用扩展,Gii 提供了一个基于 Web 的界面,可以自动生成各种常用的交互式代码片段。不过 Laravel 并不能默认支持 CRUD 的生成。
得分:Laravel 得 1 分:Yii 得 5 分
通过不同的扩展,我们往往能够让原有的框架,具有增强应用性能或特性的高级能力。虽然这两种框架都提供了受支持的扩展库,但是 Laravel 在此方面略显优势。目前,Yii 有大约 2,800 个扩展。而 Laravel 已经能够支持大约 9,000 个扩展了。
得分:Laravel 得 5 分:Yii 得 2 分
您可能需要将应用迁移到新的数据库结构中,而不想丢失旧的结构中的数据。那么,这往往离不开便利的数据库迁移框架。由于 Laravel 提供了 seeder 来协助简化该过程,因此其迁移操作相对比较容易。而 Yii 也提供了一个完整的迁移工具,来支持有效的迁移过程。
得分:Laravel 得 3 分:Yii 得 6 分
众所周知,在被用于 Web 应用的开发时,框架应当具有良好的测试能力,以检测和调试各项操作中的错误。同样,这两个框架在测试方面也是各有千秋。Yii 提供了开箱即用的 PHPUnit 和 Codeception,而 Laravel 提供了 PHPUnit、以及诸如 Httpkernel、DomCrawler、Browserkit 等各种 Symfony 测试组件。
得分:Laravel 得 4 分:Yii 得 7 分
如今,安全性对于应用程序来说已是至关重要的了,毕竟任何攻击或漏洞都可能造成严重的破坏,进而泄露有价值的客户信息。因此,您需要通过框架,来保护用户数据的同时,为各种用户角色提供和管理适当的访问级别。Yii 和 Laravel 都提供了诸如:密码保护、身份验证、防止 SQL 注入、预防跨站点脚本 (XSS) 攻击、以及其他安全威胁机制。不过,由于 Yii 提供了功能丰富且基于角色的访问控制系统,而 Laravel 则需要第三方的扩展,因此 Yii 又更胜一筹。当然,我们在此并没有贬低 Laravel 的安全性价值的意思。
得分:Laravel 得 4 分:Yii 得 8 分
Laravel 虽然提供了大量条理性强且具有技术含量的文档,然而由于信息量过大,开发人员很难快速地找到所要的信息。相比之下,Yii 虽然没有强大的文档,但是在提供信息的方式上,并不存在陡峭的学习曲线。用户可以按照其文档指引,轻松地开始编程工作。当然,不可否认的是,就文档的丰富程度而言,Laravel 要比 Yii 强大得多。
得分:Laravel 得 8 分:Yii 得 5 分
从综合评分来看,Laravel 和 Yii 可谓势均力敌、不分伯仲。毕竟每一种框架都有着适合自己的用例场景和具体领域。总的说来,Laravel 是一个广受专注的框架,其主要用户群体是各类 Web 开发人员。当然,Yii 也拥有不小的用户群,它主要适合那些初学者级别的 Web 开发人员、系统管理员、以及其他开发爱好者。
就实际项目而言,如果您正在尝试着构建大型的 Web 应用或企业级应用的话,Laravel 将是您的最佳选择。而如果您正在寻找一个简单的开发框架,且目标是开发一个中小型应用的话,那么 Yii 会更加适合您。