Behavior類是所有事件類的基類,它繼承自object類

Behavior類的前面註釋描述大概意思:
* Behavior類是所有事件類的基類
*
* 一個行為可以用來增強現有元件的功能,而不需要修改它的程式碼。
* 用來增強現有元件的功能而不修改它的程式碼。它可以新增自己的方法和屬性元件
* 使他們可以直接通過元件訪問。還可以響應元件觸發的事件,攔截正常的程式碼執行。
class Behavior extends Object
{
/**
* 要附加行為物件的元件
*/
public $owner; /**
* 宣告[[owner]]的事件處理程式.
* 子類可以重寫此方法 php回撥應連線 [[owner]]元件。
* 當行為被連線到owner時回撥將附在[[owner]]的事件中,當行為從元件中分離時,它們將被分離
*
* 回撥函式可以是以下任意格式:
*
* - 在這個行為類中的方法: `'handleClick'`, 相當於 to `[$this, 'handleClick']`
* - 類的普通方法: `[$object, 'handleClick']`
* - 類的靜態方法: `['Page', 'handleClick']`
* - 匿名函式: `function ($event) { ... }`
*
* 例如:
* ```php
* [
* Model::EVENT_BEFORE_VALIDATE => 'myBeforeValidate',
* Model::EVENT_AFTER_VALIDATE => 'myAfterValidate',
* ]
* ```
* @return 陣列事件名(陣列鍵)和相應的事件處理方法(陣列值).
*/
public function events()
{
return [];
} /**
* 繫結行為到元件
* 預設設定[[owner]]屬性並將事件處理程式繫結到元件
* 如果重寫方法,確保呼叫父類去實現
* @param 行為繫結到$owner元件
*/
public function attach($owner)
{
$this->owner = $owner;
foreach ($this->events() as $event => $handler) {
//事件繫結
$owner->on($event, is_string($handler) ? [$this, $handler] : $handler);
}
} /**
* 解除繫結的行為.
* 預設取消 owner的屬性
* 將events中的事件程式解除繫結
* 如果重寫方法,確保呼叫父類去實現
*/
public function detach()
{
if ($this->owner) {
foreach ($this->events() as $event => $handler) {
//將繫結到類上的事件解除
$this->owner->off($event, is_string($handler) ? [$this, $handler] : $handler);
}
//將 $owner 設定為 null ,解除繫結
$this->owner = null;
}
}
}