yii2项目实战-行为的理解
更新于 2016年11月29日 by 白狼 被浏览了 1322 次

我们从框架的配置以及user组件的配置一文中就抛出了行为的概念,也让很多小伙伴从头开始就对行为保持着高度的好奇心,今天我们就揭开行为的面纱,看看行为到底长的有多美,让人那么痴迷!

行为,我们看下百度百科给出的基本解释:谓举止行动;指受思想支配而表现出来的外表活动。如:做出动作,发出声音,作出反应。

再来看下官方是如何定义的概念:行为是 yii\base\Behavior 或其子类的实例。 行为,也称为 mixins, 可以无须改变类继承关系即可增强一个已有的 yii\base\Component 类功能。 当行为附加到组件后,它将“注入”它的方法和属性到组件,然后可以像访问组件内定义的方法和属性一样访问它们。 此外,行为通过组件能响应被触发的事件, 从而自定义或调整组件正常执行的代码。

官方就是官方,没信心的同学看完估计脑子都蒙了有木有!

我们一句话概述:实质就是一个类(yii\base\Behavior 或其子类的实例),通过某些特殊方式(注入,绑定),同另一个类(yii\base\Component 或其子类的实例)进行了绑定,然后二者可以进行交互。这句话你可以多看两遍,最后心里先明白,谁和谁绑定了。

那为啥要使用行为呢?行为有啥好处?行为,就是对当前类进行一个扩展,而且不用修改当前类!听起来是不是很玄乎?

下面我们来一个例子加深下理解。

backend\components目录下新增一个类文件MyBehavior.php

<?php
namespace backend\components;

use Yii;

class MyBehavior extends yii\base\ActionFilter
{
    public function beforeAction ($action)
    {
        var_dump(111);
        return true;
    }
}

很简单,我们定义了一个名为MyBehavior,继承yii\base\ActionFilter的类。具体看下文详细分析。

继续阅读

还有60%的精彩内容,购买继续阅读