ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Yii源码解读-行为(2/3)

来源:网络整理     时间:2016-03-18     关键词:

本篇文章主要介绍了"Yii源码解读-行为",主要涉及到方面的内容,对于PHPjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: Yii基础行为(Behavior)行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。 通过将行为绑定到一个类,可以使类具有行为本身所定义的...

实际操作,Behavior分别使用attach()detach()来实现即可。

定义一个行为

定义一个行为,即是准备好注入到现有类的属性和方法。即要写一个Behavior的子类

namespace app\Components;
use yii\base\Behavior;

class MyBehavior extends Behavior{
    public $prop1;

    private $_prop2;
    private $_prop3;
    private $_prop4;

    public function getProp2(){
        return $this->prop2;
    }

    public function setProp3($value){
        $this->_prop3 = $value;
    }

    public function foo(){}

    protected function bar(){}
}

该子类继承了Behavior,同时间接的继承了Object。当该类与Component绑定后,Component也就拥有了相对应public的属性和方法,而private和protected的属性和方法并不能得到。

行为的绑定

有两种方法可以将一个Behavior绑定到一个yii\base\Component上。

静态方法:在代码没有跑起来之前

静态绑定,只需要重载yii\base\Component::bahaviors()就可以了。该方法描述类所具有的行为。描述方法:

  • 配置来描述

  • Behavior类名

  • Behavior类的配置数组

namespace app\models;
use yii\db\ActiveRecord;
use app\Components\MyBehavior;

class User extends ActiveRecord{
    public function behaviors(){
        return [
            // 匿名行为
            MyBehavior::className(),
            // 名为myBehavior2的行为
            'myBehavior2' => MyBehavior::className(),
            // 匿名行为 + 给出配置数组
            [
                'class' => MyBehavior::className(),
                'prop1' => 'v1',
                'prop3' => 'v3',
            ],
            // 带名称的行为 + 配置数组
            'myBehavior4' => [
                'class' => MyBehavior::className(),
                'prop1' => 'v1',
                'prop3' => 'v3'
            ]
        ];
    }
}

另外通过配置文件:

[
    'as myBehavior2' => MyBehavior::className(),
]

动态方法绑定行为

需要调用yii\base\Component::attachBehaviors()

相关图片

相关文章