Ejemplo n.º 1
0
 /**
  * Class constructor.
  */
 public function __construct()
 {
     parent::__construct();
     $this['debug'] = true;
     $this['logger'] = function ($app) {
         return new Logger('app', [new StreamHandler('php://stdout')]);
     };
     $this['console'] = function ($app) {
         return new Console();
     };
     $this['dispatcher'] = function ($app) {
         $dispatcher = new Dispatcher();
         $dispatcher->setLogger($app['logger']);
         $dispatcher->addLayer(new RouteMiddlewareLayer('route', $app));
         $dispatcher->addLayer(new MiddlewareLayer('default'));
         return $dispatcher;
     };
     $this['server'] = function ($app) {
         $server = new Server();
         $server->setLogger($app['logger']);
         $server->setDispatcher($app['dispatcher']);
         return $server;
     };
     $this['request'] = function ($app) {
         return $app['server']->getRequest();
     };
     $this['route'] = null;
 }
Ejemplo n.º 2
0
 public function testDispatchLayerOrder()
 {
     $dispatcher = new Dispatcher();
     $dispatcher->addLayer(new MiddlewareLayer('L1'));
     $dispatcher->addLayer(new MiddlewareLayer('L2'));
     $dispatcher->addLayer(new MiddlewareLayer('L3'));
     $layers = [1 => $dispatcher->getLayer('L1'), 2 => $dispatcher->getLayer('L2'), 3 => $dispatcher->getLayer('L3')];
     $buffer = 'order:';
     for ($i = 1; $i < 4; $i++) {
         for ($j = 1; $j < 4; $j++) {
             $layers[$i]->mount('M' . $j, function ($request) use(&$buffer, $i, $j) {
                 $buffer .= sprintf('<%s-%s>', $i, $j);
                 $this->flow();
                 $buffer .= sprintf('</%s-%s>', $i, $j);
             });
         }
     }
     $dispatcher->dispatch(new Request());
     $this->assertEquals('order:<3-1><3-2><3-3><2-1><2-2><2-3><1-1><1-2><1-3></1-3></1-2></1-1></2-3></2-2></2-1></3-3></3-2></3-1>', $buffer);
 }