手机版

列举PHP的Yii 2框架的开发优势

时间:2021-09-09 来源:互联网 编辑:宝哥软件园 浏览:

当Yii框架还在RC(候选版)阶段的时候,我们就报道过,当时刚刚全面达到发布候选阶段。(现在已经发布正式版)我们觉得是时候再次讨论这个话题了:选择Yii框架的原因。

1.易于安装

对于web开发人员来说,时间就是金钱,没有人愿意在复杂的安装和配置过程中花费宝贵的时间。

安装过程中使用Composer。如果你想描述安装过程,Sitepoint最近在这里发表了一篇很棒的文章。我更喜欢使用基本的应用程序模板,即使我的网站有单独的前端和后端组件。相反,我选择使用一个模块作为我网站的背景部分。(Yii模块是最好的描述,小程序驻留在主应用中)。

请注意,引用了许多目录。在下面的示例中,目录的结构是从简单的模板中使用的。

2.使用现代技术

Yii是一个纯面向对象的框架,利用了PHP的一些高级功能,包括延迟静态绑定、SPL类和接口以及匿名函数。

允许您利用PSR-4兼容自动加载器的所有类命名空间。这意味着包括Yii在内的HTML的帮助类就像:一样简单

使用yii \ helpers \ HtmlYii还允许您定义别名来帮助简化命名空间。在上面的例子中,use语句将加载一个类定义,默认目录是/vendor/yiisoft/yii 2/helper。这个别名在第79行的BaseYii类中定义了:

public static $ alias=[' @ yii '=_ _ DIR _ _];框架本身由Composer安装,这是它的扩展。甚至发布流程扩展也像创建自己的composer.json、在Github中托管代码以及在Packagist中列出扩展一样简单。

3.高度可扩展

Yii看起来是一套很棒的西装,但是可以根据你的需求轻松定制。事实上,框架的每个组件都是可扩展的。一个简单的例子是给你的视图添加一个唯一的主题标识。如果你对为什么要这么做感兴趣,你可以阅读这篇文章。

首先,我将在我的app\components目录中创建一个名为View.php的文件,并添加以下代码:

命名空间app \组件;类视图扩展了yii \ web \ View { public $ bodyId/* Yii允许您通过在方法名称前面加上' get' */public函数getbodyattribute(){ return($ this-body id!='') ?id=' '。$this-bodyId。'' : '';}}然后,在我的主布局文件(app \ views \ layouts \ main.php)中,我将在我的HTML 3360中的body标记中添加以下代码。

尸体?=$this-BodyIdAttribute?最后,我将在我的主配置文件中添加以下代码,让Yii知道如何使用我的扩展视图类,而不是它自己的默认类:

返回[ //.组件'=[ //.View '=[' class '=' app \ components \ View ']]];4.鼓励测试

Yii框架和Codeception框架紧密结合。Codeacceptance是一个优秀的PHP测试框架,它有助于简化创建单元测试和功能验收测试的过程。条件是你正在为所有应用程序编写自动化测试用例,对吗?

代码接受扩展使得在测试期间配置应用程序变得容易。要测试应用程序,只需编辑一个现有文件//tests/_config.php。例如:

返回[' components '=[' mail '=[' usefile transport '=true,],' urlManager '=[' showScriptName '=true,],' db '=[' DSN '=' MySQL : host=localhost;dbname=mysqldb_test ',],],];使用上述配置,需要注意以下事项:

在功能验收测试中,所有发送的邮件都将被写入文件中保存,而不是实际发送出去。网址的格式是index.php/controller/action,而不是/controller/action。测试需要测试数据库,而不是生产数据库。CodeAcceptance中有一个专门的模块,专门用来测试Yii框架。它在TestGuy类中增加了一些方法,以保证active record(YII的ORM)在功能测试中能够正常工作。例如,如果您想查看注册表单是否成功创建了用户名为testuser的User对象,您可以这样做:

$ I-AMONPage(' register ');$I-fillField('username ',' test user ');$I-fillField('密码',' qwerty ');$ I-click(' Register ');$I-seeRecord('app\models\User ',array(' name '=' test User ');5.简化的安全方案

安全性是任何web应用程序的重要部分。幸运的是,Yii有很多很棒的功能可以帮你减轻负担。

Yii带来了一个安全应用程序组件,它公开了一些有助于创建更安全应用程序的方法。一些更有用的方法是:

GeneratePasswordHash:根据密码和随机盐值生成安全哈希值。这个方法会为你创建一个随机的salt值,然后使用PHP的crypt函数根据提供的字符串创建一个hash值。

ValidatePassword:这是一个可以与generatePasswordHash一起使用的方法,它允许您检查用户提供的密码是否与您存储的哈希值匹配。

GenerateRandomKey:可逆允许您创建任意长度的随机字符串

Yii会自动检查所有不安全HTTP请求方法(PUT、POST、DELETE)的可用CSRF令牌,并在您使用ActiveForm:begin()方法创建开发表单标签时生成并输出一个令牌值。可以通过编辑主配置文件来禁用此功能,包括以下代码。

返回[' components '=[' request '=[' enableCsrfValidation '=false,]];为了防止跨站脚本XSS攻击,Yii提供了另一个辅助类,叫做html净化器。这个类有一个名为process的静态方法,它将使用流行的同名过滤器库来过滤您的输出。

Yii还包含用于用户身份验证和授权的现成类。授权分为两种类型: ACF(访问控制过滤器)和RBAC(基于角色的访问控制)。

ACF是两者中的更多者,这是通过向您的控制器添加以下行为方法:来实现的

使用yii \ filters \ AccessControl类DefaultController扩展了Controller { //.公共函数行为(){ return [ //.class=' accesscontrol : class name(),' only'=['create ',' login ',' view'],' rules '=[' allow '=true,' actions'=['login ',' view'],' roles'=['?'] ],[ 'allow'=true,' actions'=['create'],' roles '=[' @ ']]]];}//.}上面的代码将告诉DefaultControllerto让来宾用户访问登录和查看的操作,而不是创建的操作。是匿名用户的别名,而@表示授权用户)。

RBAC是指定哪些用户可以在应用程序中执行特定操作的强大方法。它包括为您的用户创建角色,为您的应用程序定义权限,然后将这些角色用于他们的预期角色。如果要创建审计员角色,可以使用此方法,分配给此角色的所有用户都可以审阅文章。

您还可以使用RBAC定义规则,这些规则允许您在特定条件下授权应用程序的特定方面。例如,您可以创建一个规则,允许用户编辑自己的文章,但不能修改他人创建的文章。

6.缩短开发时间

大多数项目都包含重复性任务,没有人愿意在这些重复性任务上浪费时间。Yii提供了一些工具来帮助您在这些任务上花费更少的时间,并将大部分时间用于定制应用程序以满足客户的需求。

最强大的工具之一是“Gii”。Gii是一个基于web支架代码工具,它允许您快速创建如下代码模板:

模型控制器形成模块扩展crud控制器动作和视图gii是高度可配置的。您可以将其设置为仅从特定环境加载。只需按如下方式编辑web配置文件:

If (Yii _ env _ dev) {//.$ config[' modules '][' Gii ']=[' class '=' yii \ Gii \ module ','允许的IPS'=['127.0.0.1 ',' :0

现在,让我们来看看模型生成:

201573142815193.jpg  (1366914)

表格的名称使用一个小窗口,该窗口将响应点击而显示,以尝试猜测您的模型将与之关联的表格,并且所有字段值输入框都将有一个带有翻转效果的提示,以提醒您如何完成它们的填充。您可以在让Gii输出之前预览代码,并且所有的代码模板都是完全可定制的。

还有几个命令行辅助工具可以用于数据库迁移、消息翻译(I18N)和生成数据库道具进行自动测试。例如,您可以使用以下代码创建一个新的数据库迁移文件:

Yii迁移/创建create _ user _ table这将创建一个新的迁移模板:该模板在{应用程序目录}/迁移中如下所示

?php使用yii \ db \ Schema类m 140924 _ 153425 _ create _ user _ table扩展\ yii \ db \ Migration { public function up()} { public function down(){ echo ' m 140924 _ 153425 _ create _ user _ table无法还原。\ n ';返回false}}因此,如果我想在这个表中添加一些列,我只需在up方法:中添加以下代码

public function up(){ $ this-create table(' user ',[' id '=schema :3360 type _ PK,' username '=schema : type _ STRING。不为空',' password _ hash '=schema : TYPE _ STRING。' NOT NULL' ],NULL);}然后,为了确保我可以反向迁移,我将编辑down方法:

public function down(){ $ this-DropTable(' user ');}创建表可以简单地设计为在命令行上运行命令:/yii迁移和删除表是以下命令:/yii迁移/down7。通过调整很容易获得更好的性能

大家都知道一个慢的网站会产生很多不满的用户,所以Yii为你提供了一些工具,帮助你让你的应用获得更快的速度。

所有Yii缓存组件都是从Yii/Cache/Cache扩展而来的,它允许您在使用公共API的同时选择任何缓存系统。您甚至可以同时注册多个缓存组件。Yii目前支持数据库和文件系统缓存,以及APC、Memcache、Redis、WinCache、X Cache和Zend数据缓存。

默认情况下,如果您正在使用活动记录,Yii将运行一个额外的查询来确定生成您的模型的表的结构。通过如下编辑主配置文件,可以设置应用程序缓存这些表结构。

返回[ //.组件'=[ //.db'=[ //.enableSchemaCache'=true,' schemaCacheDuration'=3600,' schemaCache'='cache ',],' cache '=[' class '=' yii \ cache \ file cache ',],];最后,Yii有一个命令行工具,可以轻松减少前端字段。只需运行以下命令来生成配置模板:/yilast/template config.php然后编辑配置,并指定您要使用哪些工具来执行缩减操作(例如。closecompiler、yuicompressor或UglifyJS)。生成的配置模板显示在:下面

?服务器端编程语言(Professional Hypertext Preprocessor的缩写)返回[' jsCompressor '=' Java-jar编译器。jar-js { from }-js _ output _ file { to } ',' CSS compressor '=' Java-jar yuicompressor。jar-type CSS { from }-o { to } ',' bundle '=[/' yii \ web \ YiiAsset ',/' yii \ web \ jqueryset ',],' targets '=[' app \ config \ AllAsset '=[' base path '=' path/to/web ',' js ',' css'='css/all-{hash} .css ',],],' asset manager '=[' base path '=_ _ DIR _ _,' baseUrl'=' ',],];接下来,运行这个控制台命令以执行压缩。

yii资产config.php/app/assets压缩的。服务器端编程语言(Professional Hypertext Preprocessor的缩写)最后,修改你的网应用程序配置文件,使用压缩后的资源。

组件'=[ //.资产管理器'=[' bundle '=require '/app/assets _ compressed。PHP ']]注意: 你需要手动下载并安装这些额外的工具。

版权声明:列举PHP的Yii 2框架的开发优势是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。