YII2框架學習 擴充套件篇(二) 事件機制

2021-08-03 04:14:09 字數 1687 閱讀 1716

今天學習yii框架的事件機制,某個物件可以丟擲一些事件,而其他的物件可以監聽這些事件,然後呼叫相應的方法。而具體的實現方式可以分為掃瞄式和繫結式。而yii框架使用的就是繫結式。下面來詳細講解一下。

所謂繫結式,是由事件執行時,通過component類下的trigger()方法丟擲事件,然後通過on()方法來繫結其他物件對此事件的反應。下面通過乙個簡單的貓叫老鼠跑的例子來說明。這個乙個一對一的事件機制。

1.乙個一對一的事件機制

cat.php

namespace vendor\animal;

use \yii\base\component;

class myevent extends event

class cat extends component

}

mouse.php

namespace vendor\animal;

class mouse

}

控制器

use yii\web\controller;

use vendor\animal\cat;

use vendor\animal\mouse;

use vendor\animal\dog;

use \yii\base\event;

class hellocontroller extends controller

}輸出為

miao

mouse running

2.帶引數的事件

有的時候,事件需要引數才能讓其他物件反應的,比如報警119,需要告知著火地點。可以通過trigger來寫入事件資訊。

cat.php

namespace vendor\animal;

use \yii\base\component;

use \yii\base\event;

class myevent extends event

class cat extends component

}

mouse.php

namespace vendor\animal;

class mouse

}

輸出miao

hello

mouse running

3.觸發多個事件

可以加上dog.php

namespace vendor\animal;

class dog

}

控制器加上

$cat->on('miao',[$dog,'run']);

要想接觸繫結

$cat->off('miao',[$dog,'run']);

輸出miao

hello

mouse running

hello

dog catch

4.類觸發事件

有的時候,不只是某只例項化的貓,只要是只貓叫就想讓老鼠跑的話,可以這麼寫on

event::on(cat::classname(),'miao',[$mouse,'run']);

YII2框架學習 擴充套件篇(四) 依賴注入

看了一些介紹,感覺都說得不夠透徹啊。我個人簡單舉個例子,就是在搜尋的時候,把所有可變條件都作為引數輸入,這樣可以實現 最大程度的復用,增加 的擴充套件性。不過,yii框架這種情況提供了其他相應的方案,先看看容器方式的實現。說實話,我自己沒看很懂,半知半覺,以後花時間好好研究一下,我怎麼感覺這都不像p...

YII2框架學習 擴充套件篇(一) 模組化設計

接下來學習yii框架的模組化設計,首先要開啟gii工具,http localhost basic web index.php?r gii。進到module generator,填入module class和id.然後在框架目錄就會多出來這個子模組,真是太方便了。包含控制器資料夾,視 件夾和模組的類。...

Yii2 許可權控制RBAC 應用篇(二)

1.首先我們要在配置檔案的元件 component 裡面配置一下 rbac authmanager class yii rbac dbmanager itemtable auth item assignmenttable auth assignment itemchildtable auth ite...