YII2框架中behavior行为的理解与使用方法示例
发布:smiling 来源: PHP粉丝网 添加日期:2022-02-20 09:45:39 浏览: 评论:0
本文实例讲述了YII2框架中behavior行为的理解与使用方法,分享给大家供大家参考,具体如下:
YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。
行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为。
注意行为是对功能的扩展,不要乱用行为,比如有一个动物类和一个人类,他们各自有自已的名称,身高,体重,这些是属性。
他们都会跑,这个时候我们就可以抽象出来做成一个跑的行为,根据不同需求来扩展他们。
这里我们有两个控制器一个GoodsController,一个OrderController,他们都接收请求,返回数据给客户端,不过有的需要返回json,有的需要返回xml。
那么我们就创建一个返回数据行为来扩展这两个控制器。
我们在项目目录下创建common目录,并创建ReturnBehavior.php,代码如下:
- <?php
- namespace app\common;
- use YII;
- use yii\base\Behavior;
- use yii\web\Controller;
- use yii\web\Response;
- //必须继承自yii\base\Behavior
- class ReturnBehavior extends Behavior
- {
- //返回类型,通过控制器里的behaviors()配置参数获取值
- public $return_type = '';
- //让行为响应组件的事件触发
- public function events()
- {
- return [
- //控制器方法执行后触发事件,调用returnData函数
- Controller::EVENT_AFTER_ACTION => 'returnData',
- ];
- }
- //返回数据
- public function returnData()
- {
- switch ($this->return_type) {
- case 'json':
- YII::$app->response->format = Response::FORMAT_JSON;
- break;
- case 'xml':
- YII::$app->response->format = Response::FORMAT_XML;
- break;
- case 'html':
- YII::$app->response->format = Response::FORMAT_HTML;
- break;
- default :
- break;
- }
- }
- //定义方法
- public function test() {
- echo 'returnBehavior test ...';
- }
- }
然后我们在两个控制器中配置behaviors()来使用行为:
GoodsController.php代码如下:
- <?php
- namespace app\controllers;
- use YII;
- use app\common\ReturnBehavior;
- use yii\web\Controller;
- //想要使用行为,必须是component或是其子类
- //yii\web\Controller继承自component,所以可以使用
- class GoodsController extends Controller
- {
- //配置控制器需要使用的行为
- public function behaviors()
- {
- return [
- 'returnBehavior' => [
- 'class' => ReturnBehavior::className(),
- 'return_type' => 'json',
- ],
- ];
- }
- //获取商品列表
- public function actionGetGoodsList()
- {
- return [
- ['id' => 1, 'name' => '商品1'],
- ['id' => 2, 'name' => '商品2'],
- ];
- }
- public function actionIndex()
- {
- //控制器调用行为中的方法
- $this->getBehavior('returnBehavior')->test();
- //注意这里,因为使用了行为,方法执行后会设置返回内容为xml,我们重新设置为html
- $this->getBehavior('returnBehavior')->return_type = 'html';
- }
- }
OrderController.php代码如下:
- <?php
- namespace app\controllers;
- use YII;
- use app\common\ReturnBehavior;
- use yii\web\Controller;
- //想要使用行为,必须是component或是其子类
- //yii\web\Controller继承自component,所以可以使用
- class OrderController extends Controller
- {
- //配置控制器需要使用的行为
- public function behaviors()
- {
- return [
- 'returnBehavior' => [
- 'class' => ReturnBehavior::className(),
- 'return_type' => 'xml',
- ],
- ];
- }
- //获取商品列表
- public function actionGetOrderList()
- {
- return [
- ['id' => 1, 'name' => '订单1'],
- ['id' => 2, 'name' => '订单2'],
- ];
- }
- public function actionIndex()
- {
- //控制器调用行为中的方法
- $this->getBehavior('returnBehavior')->test();
- //注意这里,因为使用了行为,方法执行后会设置返回内容为xml,我们重新设置为html
- $this->getBehavior('returnBehavior')->return_type = 'html';
- }
- }
这个时候我们在地址栏访问/goods/get-goods-list和/order/get-order-list,结果如下:
然后我们访问/goods/index和/order/index,行为方法成功调用,结果如下:
Tags: behavior
- 上一篇:YII2框架中actions的作用与使用方法示例
- 下一篇:最后一页
相关文章
- ·详解在PHP的Yii框架中使用行为Behaviors的方法(2021-07-18)
- ·YII框架行为behaviors用法示例(2021-11-20)
- ·YII2.0框架行为(Behavior)深入详解(2021-12-07)
- ·Yii2.0框架behaviors方法使用实例分析(2021-12-26)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)