public function testComplexRandom() { $eManager = new EventManager(); $parts = array('foo', 'bar', 'woo', 'bazz', '*', '*', '*'); for ($i = 0; $i < 100; $i++) { shuffle($parts); $partsRand = implode('.', array_slice($parts, 0, mt_rand(1, count($parts)))); if ($partsRand === '*') { $partsRand .= '.foo'; } $eManager->on($partsRand, function () { // noop }, mt_rand(0, $i)); } runBench(array('Many' => function () use($eManager) { $parts = array('foo', 'bar', 'woo', 'bazz'); shuffle($parts); $partsRand = implode('.', array_slice($parts, 0, mt_rand(1, count($parts)))); $eManager->trigger($partsRand); }), array('name' => 'Complex random', 'count' => 1000)); }
public function testComplex2() { $eManager = new EventManager(); $eManager->on('*.save', $this->noop); $eManager->on('*.save.*', $this->noop); $eManager->on('*.save.*', $this->noop); $eManager->on('*.save.*', $this->noop); $eManager->on('*.save.*.*', $this->noop); $eManager->on('*.save.before', $this->noop); $eManager->on('item.save.before', $this->noop); $eManager->on('category.save.before', $this->noop); $eManager->on('category.load.before', $this->noop); $eManager->on('category', $this->noop); is(0, $eManager->trigger('item.load')); is(0, $eManager->trigger('item.load.before')); is(0, $eManager->trigger('save.before')); is(0, $eManager->trigger('item.save.before.realy.deep.name')); is(0, $eManager->trigger('category.save.before.realy.deep.name')); is(1, $eManager->trigger('item.save')); is(1, $eManager->trigger('category')); is(1, $eManager->trigger('item.save.after.deep')); is(3, $eManager->trigger('item.save.after')); is(5, $eManager->trigger('item.save.before')); }
/** * @expectedException \JBZoo\Event\Exception */ public function testEmptyEventNameOn() { $eManager = new EventManager(); $eManager->on(' ', function () { }); }
/** * Bind callback on some event * * @param string $triggerName * @param callable $function * @param int $priority * @return $this * * @SuppressWarnings(PHPMD.ShortMethodName) */ public function on($triggerName, callable $function, $priority = EventManager::MID) { $this->_eManager->on($triggerName, $function, $priority); return $this; }