搜尋

首頁  >  問答  >  主體

symfony - 誰能說sf2中subscriber和listener的差別

如題,listener大概清楚,subscriber比較暈。

怪我咯怪我咯2755 天前537

全部回覆(1)我來回復

  • 为情所困

    为情所困2017-05-16 16:48:15

    註冊listener(某個class的某個method)的時候需要指定事件。

    而subscriber透過getSubscribedEvents()靜態方法來指定事件的處理,可以理解成批次註冊。 getSubscribedEvents()的回傳值是個數組,鍵是事件名稱,對應的嵌套數組裡列舉這個事件需要觸發的方法以及其優先權(值大的先觸發,-1024~1024)

    class ExampleSubscriber implements EventSubscriberInterface
    {
        static public function getSubscribedEvents()
        {
            return array(
                'kernel.response' => array( // <-- 事件
                    array('onKernelResponseFirst', 5), // <-- 第一个回调,优先级5
                    array('onKernelResponseSecond', 0) // <-- 第二个回调,优先级0
                )
            );
        }
    
        public function onKernelResponseFirst(FilterResponseEvent $event)
        {
            // ...
        }
    
        public function onKernelResponseSecond(FilterResponseEvent $event)
        {
            // ...
        }
    }

    回覆
    0
  • 取消回覆