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"); }
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); }
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')); }