public static function setEventCollection(EventManagerInterface $events = null) { parent::setEventCollection($events); $sharedManager = StaticEventManager::getInstance(); static::$events->setSharedManager($sharedManager); static::$events->setIdentifiers(array(__CLASS__, get_called_class(), 'dots')); }
public function onBootstrap(MvcEvent $e) { $serviceLocator = $e->getApplication()->getServiceManager(); GlobalEventManager::attach(EVENT_LOG_ERROR, function (Event $event) use($serviceLocator) { $message = Encoder::encode($event->getParams()); $serviceLocator->get('LogMongodbService')->addRecord(Logger::ERROR, $message, array()); return true; }); GlobalEventManager::attach(EVENT_LOG_DEBUG, function (Event $event) use($serviceLocator) { $message = Encoder::encode($event->getParams()); $serviceLocator->get('LogMongodbService')->addRecord(Logger::DEBUG, $message, array()); return true; }); }
public function testProxiesAllStaticOperationsToEventCollectionInstance() { $test = new \stdClass(); $listener = GlobalEventManager::attach('foo.bar', function ($e) use($test) { $test->event = $e->getName(); $test->target = $e->getTarget(); $test->params = $e->getParams(); return $test->params; }); $this->assertInstanceOf('Zend\\Stdlib\\CallbackHandler', $listener); GlobalEventManager::trigger('foo.bar', $this, array('foo' => 'bar')); $this->assertSame($this, $test->target); $this->assertEquals('foo.bar', $test->event); $this->assertEquals(array('foo' => 'bar'), $test->params); $results = GlobalEventManager::triggerUntil('foo.bar', $this, array('baz' => 'bat'), function ($r) { return is_array($r); }); $this->assertTrue($results->stopped()); $this->assertEquals(array('baz' => 'bat'), $test->params); $this->assertEquals(array('baz' => 'bat'), $results->last()); $events = GlobalEventManager::getEvents(); $this->assertEquals(array('foo.bar'), $events); $listeners = GlobalEventManager::getListeners('foo.bar'); $this->assertEquals(1, count($listeners)); $this->assertTrue($listeners->contains($listener)); GlobalEventManager::detach($listener); $events = GlobalEventManager::getEvents(); $this->assertEquals(array(), $events); $listener = GlobalEventManager::attach('foo.bar', function ($e) use($test) { $test->event = $e->getEvent(); $test->target = $e->getTarget(); $test->params = $e->getParams(); }); $events = GlobalEventManager::getEvents(); $this->assertEquals(array('foo.bar'), $events); GlobalEventManager::clearListeners('foo.bar'); $events = GlobalEventManager::getEvents(); $this->assertEquals(array(), $events); }
/** * 打印最后一个错误信息 */ private function debug() { if ($this->_db instanceof \MongoDB) { $err = $this->_db->lastError(); // 在浏览器中输出错误信息以便发现问题 if (self::debug) { fb($err, \FirePHP::LOG); } else { if ($err['err'] != null) { GlobalEventManager::trigger('logError', null, array(json_encode($err))); } } } }