Ejemplo n.º 1
0
 public function testEventsWeakref()
 {
     if (!class_exists('WeakRef')) {
         $this->markTestSkipped('weakref extension is required');
         return;
     }
     $eventsManager = new Phalcon\Events\Manager();
     $firstListener = new MyFirstWeakrefListener();
     $secondListener = new MySecondWeakrefListener();
     $eventsManager->attach('my', $firstListener);
     // without weakref
     $eventsManager->attach('my', new WeakRef($secondListener));
     // with weakref
     ob_start();
     // fire when two listeners still exists.
     $eventsManager->fire('my:afterShow', null);
     $data = ob_get_clean();
     $this->assertEquals($data, "show first listener\nshow second listener\n");
     unset($firstListener);
     unset($secondListener);
     ob_start();
     // fire when two listeners was unsetted.
     $eventsManager->fire('my:afterShow', null);
     $data = ob_get_clean();
     $this->assertEquals($data, "show first listener\n");
 }
Ejemplo n.º 2
0
 public function testEventsPropagation()
 {
     $eventsManager = new Phalcon\Events\Manager();
     $number = 0;
     $propagationListener = function ($event, $component, $data) use(&$number) {
         $number++;
         $event->stop();
     };
     $eventsManager->attach('some-type', $propagationListener);
     $eventsManager->attach('some-type', $propagationListener);
     $eventsManager->fire('some-type:beforeSome', $this);
     $this->assertEquals($number, 1);
 }
Ejemplo n.º 3
0
 public function testGroupedEvents()
 {
     $e = new \Phalcon\Events\Manager();
     $e->collectResponses(true);
     $e->attach('group', function ($event, $data) {
         return 'group';
     });
     $e->attach('group:event:event', function ($event, $data) {
         return 'group';
     });
     $e->attach('group:event:event', function ($event, $data) {
         return 'event';
     });
     $e->fire('group:event:event', (object) 'source');
     $this->assertEquals($e->getResponses(), array('group', 'group', 'event'));
 }