如何在YII2框架中使用行为

  介绍

本篇文章给大家分享的是有关如何在YII2框架中使用的行为,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。

行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为。

注意行为是对功能的扩展,不要乱用行为,比如有一个动物类和一个人类,他们各自有自已的名称,身高,体重,这些是属性。

他们都会跑,这个时候我们就可以抽象出来做成一个跑的行为,根据不同需求来扩展他们。

这里我们有两个控制器一个GoodsController,一个OrderController,他们都接收请求,返回数据给客户端,不过有的需要返回json,有的需要返回xml。

那么我们就创建一个返回数据行为来扩展这两个控制器。

我们在项目目录下创建共同目录,并创建ReturnBehavior。php,代码如下:

& lt; php ?      namespace 应用\常见;      use , YII;   use  yii \基地\行为;   use , yii \ web \控制器;   use  yii \ web \反应;//必须继承自yii \ \行为基础   class  ReturnBehavior  extends 行为   {//才能返回类型,通过控制器里的行为()配置参数获取值   public 才能;return_type 美元;=,& # 39;& # 39;;//让才能行为响应组件的事件触发   public 才能;function 事件()   {才能   ,,,return  [   ,,,,,//控制器方法执行后触发事件,调用returnData函数   ,,,,,控制器:EVENT_AFTER_ACTION =祝辞,& # 39;returnData& # 39;   ,,,);   ,,}//才能返回数据   public 才能;function  returnData ()   {才能   ,,,switch  ($ this→return_type), {   ,,,,,case  & # 39; json # 39;:   ,,,,,,,YII:应用程序→美元反应→format =,响应:FORMAT_JSON;   ,,,,,,,休息;   ,,,,,case  & # 39; xml # 39;:   ,,,,,,,YII:应用程序→美元反应→format =,响应:FORMAT_XML;   ,,,,,,,休息;   ,,,,,case  & # 39; html # 39;:   ,,,,,,,YII:应用程序→美元反应→format =,响应:FORMAT_HTML;   ,,,,,,,休息;   ,,,,,default :   ,,,,,,,休息;   ,,,}   ,,}//才能定义方法   public 才能;function 测试(),{   ,,,echo  & # 39; returnBehavior  test ……& # 39;;   ,,}   }

然后我们在两个控制器中配置行为()来使用行为:

GoodsController。php代码如下:

& lt; php ?      namespace 应用\控制器;      use , YII;   use 应用\ \ ReturnBehavior常见;   use , yii \ web \控制器;//想要使用行为,必须是组件或是其子类//yii \ web \控制器继承自组件,所以可以使用   class  GoodsController  extends 控制器   {//才能配置控制器需要使用的行为   public 才能;function 行为()   {才能   ,,,return  [   ,,,,,& # 39;returnBehavior& # 39;,=祝辞,(   ,,,,,,,& # 39;类# 39;,=祝辞,ReturnBehavior::类名(),   ,,,,,,,& # 39;return_type& # 39;,=祝辞,& # 39;json # 39;   ,,,,,,   ,,,);   ,,}//才能获取商品列表   public 才能;function  actionGetGoodsList ()   {才能   ,,,return  [   ,,,,,(& # 39;id # 39;,=祝辞,1,& # 39;名字# 39;,=祝辞,& # 39;商品1 & # 39;],   ,,,,,(& # 39;id # 39;,=祝辞,2,& # 39;名字# 39;,=祝辞,& # 39;商品2 & # 39;],   ,,,);   ,,}      public 才能;function  actionIndex ()   {才能   ,,,//控制器调用行为中的方法   ,,,这个→美元getBehavior (& # 39; returnBehavior& # 39;)→测试();   ,,,//注意这里,因为使用了行为,方法执行后会设置返回内容为xml,我们重新设置为html   ,,,这个→美元getBehavior (& # 39; returnBehavior& # 39;)→return_type =, & # 39; html # 39;;   ,,}   }

OrderController。php代码如下:

& lt; php ?      namespace 应用\控制器;      use , YII;   use 应用\ \ ReturnBehavior常见;   use , yii \ web \控制器;//想要使用行为,必须是组件或是其子类//yii \ web \控制器继承自组件,所以可以使用   class  OrderController  extends 控制器   {//才能配置控制器需要使用的行为   public 才能;function 行为()   {才能   ,,,return  [   ,,,,,& # 39;returnBehavior& # 39;,=祝辞,(   ,,,,,,,& # 39;类# 39;,=祝辞,ReturnBehavior::类名(),   ,,,,,,,& # 39;return_type& # 39;,=祝辞,& # 39;xml # 39;   ,,,,,,   ,,,);   ,,}//才能获取商品列表   public 才能;function  actionGetOrderList ()   {才能   ,,,return  [   ,,,,,(& # 39;id # 39;,=祝辞,1,& # 39;名字# 39;,=祝辞,& # 39;订单1 & # 39;],   null   null   null   null   null   null   null   null   null   null   null   null

如何在YII2框架中使用行为