-
registerEvents
在\Piwik\Plugin的自派生类中的registerEvents函数可以向Piwik注册事件,函数返回一个Key-Value结构的数组,数组的Key是事件的名称(取名应该是随意的,暂时还没发现有什么套路),数组的Value是处理事件的函数,有两种形式:
-
字符串形式的
public function registerEvents() { return array( "Platform.initialized"=>"processEventInPluginClass" ); } public function processEventInPluginClass() { echo "<h4>Hello , the event process is in<br/><br/> class: ".__CLASS__."<br/> function : ".__FUNCTION__."</h4><br/>"; }
类似于上面这种,处理函数作为放在Piwik\Plugin派生类的方法,但是如果一个插件响应事件太多了,这个类就会显得有点肥硕,还好,我们可以吧处理的函数放到其他的类中实现。
-
数组形式
如上代码,数组的Value是一个数组,function的内容可以是一个字符串,类似于上面函数名,也可以参照PHP的call_user_func的参数,参照PHP call_user_func 可以知道传参的方式,上面只是一个简单的例子,相当于执行 $testEvent->processEventInOtherClass(..arguments);除了function之外,还有两个可选项,after 和 before 作为标识响应的顺序。public function registerEvents() { $testEvent = new TestEvent(); return array( "Platform.initialized"=>array( "function"=>array( $testEvent, 'processEventInOtherClass' ), "after"=>1 ) ); }
-
上面两个例子可以再CoreExtend和SiteSeparator两个插件的注释中可以看到