addDefinitions(__DIR__ . "/../config/{$env}/default.inc.php"); // Config file for the environment if exists $userConfig = __DIR__ . "/../config/{$env}/config.inc.php"; if (file_exists($userConfig)) { $builder->addDefinitions($userConfig); } // Set up dependencies $dependencies = new RegisterDependencies(); $dependencies($builder); // Build PHP-DI Container instance $container = $builder->build(); // Instantiate the app $app = Bridge::create($container); // Register middleware $middleware = new RegisterMiddlewares(); $middleware($app); // Register routes // yes, it's anti-pattern you shouldn't get deps from container directly $routes = $container->get(RegisterRoutes::class); $routes($app); // Create Request object from globals $serverRequestCreator = ServerRequestCreatorFactory::create(); $request = $serverRequestCreator->createServerRequestFromGlobals(); // Get error middleware from container // also anti-pattern, of course we know $errorMiddleware = $container->get(ErrorMiddleware::class); // Run App & Emit Response $response = $app->handle($request); $responseEmitter = (new ResponseEmitter()) ->setRequest($request) ->setErrorMiddleware($errorMiddleware) ->setAnalyzer($container->get(AnalyzerInterface::class)); $responseEmitter->emit($response);