what & how to do

  • registerEvents

    在\Piwik\Plugin的自派生类中的registerEvents函数可以向Piwik注册事件,函数返回一个Key-Value结构的数组,数组的Key是事件的名称(取名应该是随意的,暂时还没发现有什么套路),数组的Value是处理事件的函数,有两种形式:

    • 字符串形式的
      public function registerEvents()
      {
          return array(
                  "Platform.initialized"=>"processEventInPluginClass"
          );
      }
      public function processEventInPluginClass()
      {
          echo "

      Hello , the event process is in

      class: ".__CLASS__."
      function : ".__FUNCTION__."


      "; }

    类似于上面这种,处理函数作为放在Piwik\Plugin派生类的方法,但是如果一个插件响应事件太多了,这个类就会显得有点肥硕,还好,我们可以吧处理的函数放到其他的类中实现。

    • 数组形式
      public function registerEvents()
      {
          $testEvent = new TestEvent();
          return array(
                  "Platform.initialized"=>array(
                          "function"=>array(
                                  $testEvent,
                                  'processEventInOtherClass'
                          ),
                          "after"=>1
                  )
          );
      }
      
      如上代码,数组的Value是一个数组,function的内容可以是一个字符串,类似于上面函数名,也可以参照PHP的call_user_func的参数,参照PHP call_user_func 可以知道传参的方式,上面只是一个简单的例子,相当于执行 $testEvent->processEventInOtherClass(..arguments);除了function之外,还有两个可选项,after 和 before 作为标识响应的顺序。

上面两个例子可以再CoreExtend和SiteSeparator两个插件的注释中可以看到

你可能感兴趣的:(what & how to do)