本篇文章主要介绍了"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()