介绍
本篇文章给大家分享的是有关如何在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框架中使用行为