Example #1
0
 public function testStackMiddleware()
 {
     $this->app->get("/", function () {
         return new Response("hello from controller");
     });
     $this->app->registerStackMiddleware("Singo\\Tests\\Middleware\\TestMiddleware");
     $app = $this->app->builder->resolve($this->app);
     $response = $app->handle(Request::create("/"));
     $this->assertEquals($response->getContent(), "hello from middleware");
 }
 /**
  * @param Application $container
  */
 public function init(Application $container)
 {
     /**
      * container aware event dispatcher
      */
     $container->register(new ContainerAwareEventDispatcher());
     /**
      * cache
      */
     $container->register(new CacheServiceProvider());
     /**
      * configuration
      */
     $container->register(new Config());
     /**
      * logger
      */
     $container->register(new Logger());
     /**
      * doctrine orm
      */
     $container->register(new Orm());
     /**
      * validator
      */
     $container->register(new Validator());
     /**
      * mailer
      */
     $container->register(new Mailer());
     /**
      * command bus
      */
     $container->register(new CommandBus());
     /**
      * security
      */
     $container->register(new Firewall());
     /**
      * controller as a service
      */
     $container->register(new ServiceControllerServiceProvider(), ["tactician.inflector" => "class_name", "tactician.middlewares" => [$container["command.bus.logger.middleware"], $container["command.bus.validation.middleware"]]]);
     /**
      * Save container in static variable
      */
     self::$container = $container;
     if ($this instanceof Application) {
         /**
          * content negotiation middleware
          */
         $container->registerStackMiddleware(Negotiation::class, null, null, null, ["language_priorities" => $container["config"]->get("api/content_negotiator/language") ?: ["en"], "format_priorities" => $container["config"]->get("api/content_negotiator/format") ?: ["*/*"]]);
         /**
          * cors
          */
         $cors_config = $container["config"]->get("api/cors") ?: ["allowedHeaders" => ["*"], "allowedMethod" => ["*"], "allowedOrigins" => ["*"], "exposedHeaders" => false, "maxAge" => false, "supportsCredentials" => false];
         $container->registerStackMiddleware(Cors::class, $cors_config);
     }
     /**
      * boot module if module feature enabled in configuration
      */
     if ($container->offsetExists("use.module") && $container["use.module"] === true) {
         $this->bootModule();
     }
 }