Example #1
0
 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));
 }
Example #2
0
 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'));
 }
Example #3
0
 /**
  * @expectedException \JBZoo\Event\Exception
  */
 public function testEmptyEventNameOn()
 {
     $eManager = new EventManager();
     $eManager->on(' ', function () {
     });
 }
Example #4
0
 /**
  * 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;
 }