程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> Yii使用CAction類的事件

Yii使用CAction類的事件

編輯:PHP基礎知識
 

件通常按以下方式使用:


 

  1. 在你的組件中聲明事件並添加它的方法(即 function onClick($event))

  2. 將事件附加到事件處理程序(event handlers)(即 $object->onClick = array($handleObject, 'staticMethod');)

  3. 在你的組件中觸發它來調用它的所有處理程序(即 $this->raiseEvent('onClick', $event)).注意,對於處理程序來說,你可以寫一個對象的靜態方法,一個對象的方法,創建一個函數(create_function),甚至可以直接附加一個函數(自 PHP 5.3)

提示


 

如果我們查看 Ccomponent 的魔術方法 __set, 我們就會發現事件處理程序通常像屬性一樣設置。考慮到這些,以下是我的關於設置 CAction 類的事件處理程序的快速提示,我認為這是比較好的組織你的控制器的代碼方法。

CAction 類


 

先寫一個簡單的 CAction 類的例子 EmyAction.php:

class EMyAction extends CAction{
    public function onTest($event){
        $this->raiseEvent('onTest', $event);
    }
    public function run() {
        $event = new CEvent($this);
        $this->onTest($event);
    }
}

控制器


 

現在在我們的控制器中寫一個事件處理程序的方法並且配置這個 action(假設在 controllers文件夾下的actions 文件夾下)

// 我們的事件處理程序的方法,為簡單起見我們寫在控制器裡面
public function eventHandlerMethod($event)
{
    echo 'TESTING Handler';
}
       
// 聲明 actions 和事件處理程序
public function actions()
{
    return array(
        // test 是動作的名稱 <controller/action>
        'test'=>array(
            'class'=>'actions.EMyAction',
            'onTest'=>array($this,'eventHandlerMethod')
        )
    );
}

現在所有代碼都以完成,你可以使用任何浏覽器來測試結果.
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved