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

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

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

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

使用行为的大致流程:

  • yii\base\Component派生自己的类,以便使用行为。

  • yii\base\Behavior派生自己的行为类,定义属性和方法。

  • 将Component和Behavior绑定起来

  • 像使用Behavior一样使用Component

行为的要素

  • $owner:指向行为的依附对象

  • events():行为所有要响应的事件

  • attach():将行为与Component绑定起来

  • detach():你懂的

行为的依附对象

在行为的方法中, $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双方共同参与才行。

相关图片

相关文章