Yii2 行为

参考:https://www.cnblogs.com/achengmu/p/6605198.html
https://blog.csdn.net/jalon2015/article/details/46900569
https://www.jianshu.com/p/63e56d2f51ef
还有个http://www.cnblogs.com/jkko123/p/8670826.html

yii2中的行为理解就是,写一个继承yii\base\Behavior的类,然后其他继承自component的组件或者类可以直接使用这个类的方法或者属性

其实就相当于use

例子:
先写继承behavior的类

namespace app\components\behavior;
use yii\base\Behavior;

class MyBehavior extends Behavior{

    public $name;
    public $age;
    // set方法
     public function setName($name)
    {
        $this->name = $name;
    }
    public function getName()
    {
        return $this->name;
    }
    public function setAge($age)
    {
        $this->age = age;
    }
    public function getAge()
    {
        return $this->age;
    }
    // 也可以在里面写事件
    public function events() {
        return [
            BaseActiveRecord::EVENT_BEFORE_VALIDATE => 'beforeValidate',
            BaseActiveRecord::EVENT_AFTER_INSERT => 'afterSave',
            BaseActiveRecord::EVENT_AFTER_UPDATE => 'afterSave',
            BaseActiveRecord::EVENT_BEFORE_DELETE => 'beforeDelete',
        ];
    }

}

然后其他类直接先使用behavior方法用

class DefaultController extends Controller
{

    public $url;

    public function behaviors()
    {
        return [   
             // 匿名行为,只有行为类名
            'MyBehavior'=>[
                'class'=>MyBehavior::className(),      // 这边要被上面use了
                'name'=>'jerry',
                'age'=>20    
            ]

        ];
    }

    /**
     * 开始在方法中使用
     * @return string
     */
    public function actionIndex()
    {         
        return $this->render('index', ['age'=>$this->age, 'name'=>$this->name]);// 这边直接使用


> 这边是另一个添加行为的方法,就是一个继承了component的类然后attach了behavior,这个attach用的比较多

        $MyBehavior=new MyBehavior;// 继承的是behavior
        $MyBehaviorAttachClass=new MyBehaviorAttachClass;// 继承的是component
        $MyBehaviorAttachClass->attachBehavior('MyBehavior',$MyBehavior);// 附加上去
        echo $MyBehaviorAttachClass->propertyTest;// 直接使用行为的属性
        echo $MyBehaviorAttachClass->methodTest();// 和方法

    }
}
posted @ 2018-07-06 11:13  蜗牛使劲冲  阅读(3)  评论(0编辑  收藏  举报  来源