本篇文章主要介绍了"Yii源码解读-行为",主要涉及到方面的内容,对于PHPjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
Yii基础行为(Behavior)行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。 通过将行为绑定到一个类,可以使类具有行为本身所定义的...
Yii基础
行为(Behavior)
行为(behavior)可以在不修改现有类的情况下,对类的功能进行扩充。 通过将行为绑定到一个类,可以使类具有行为本身所定义的属性和方法,就好像类本来就有这些属性和方法一样。 而且不需要写一个新的类去继承或包含现有类。
Yii中的行为,是yii\base\Behavior
中的实例,只要将Behavior
实例绑定到Component
实例上即可。但是,Behavior只能与Component类绑定。
如果你写了一个类,需要用到行为,那么必须要继承自yii\base\Component
。
使用行为
Demo:
// 定义一个将绑定行为的类
class MyClass extends yii\base\Component{}
//定义一个行为类,他将绑定到MyClass上
class MyBehavior extends yii\base\Behavior{
public $property1 = 'This is property in MyBehavior.';
public function method1(){
return 'Method in MyBehavior is called.';
}
}
$myClass = new MyClass();
$myBehavior = new MyBehavior();
// Bind
$myClass->attachBehavior('myBehavior', $myBehavior);
// 访问
echo $myClass->property1;
echo $myClass->method1();
使用行为的大致流程:
行为的要素
行为的依附对象
在行为的方法中, $this 引用的是行为本身, 试图通过 $this 来访问行为所依附的Component是行不通的。 正确的方法是通过yii\base\Behavior::$owner
来访问Component。
行为所要响应的事件
重载yii\base\Behavior::events()
方法,表示这个行为将对类何种事件进行何种反馈。
namespace app\Components;
use yii\db\ActiveRecord;
use yii\base\Behavior;
class MyBehavior extends Behavior{
// 重载,使得事件触发时,调用行为中的一些方法
public function events(){
// 在AR的这个事件触发时,调用成员函数beforeValidate
return [ActiveRecord::EVENT_BEFORE_VALIDATE => 'beforeValidate']
}
// 行为的成员函数
public function beforeValidate($events){...}
}
行为的绑定和解除
绑定和解除,均需要行为和Component双方共同参与才行。