Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
 /**
  * 打印最后一个错误信息
  */
 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)));
             }
         }
     }
 }