yii2项目实战-行为的理解
更新于 2017年07月21日 by 白狼 被浏览了 3277 次

前文框架的配置以及user组件的配置中我们就多次抛出行为的概念,再加上上一节我们文末的引子,相信很多小伙伴都很期待行为到底是个什么东东。今天我们就揭开它的面纱,看看行为到底是什么!

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

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

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

提醒:官方这里定义中描述的 “组件” 并非是 我们以前接触的components配置,这里所说的组件是 yii\base\Component 子类的意思哦。

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

那为啥要使用行为呢?行为有啥好处?行为,就是对当前类进行一个扩展,而且不用修改当前类!听起来是不是很玄乎?现在再结合一下我们上文说的100个控制器的问题,是不是豁然间就明白行为是什么啦?

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

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

<?php
namespace backend\components;

use Yii;

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

继续阅读

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