Exemplo n.º 1
0
 public function init()
 {
     // register packages autoloading
     $this->getAutoloader()->addPsr4('Project\\Package\\', 'packages/');
     // define middleware endpoints
     $this->addSteps('init', 'bootstrap', 'route', 'action', 'rendering', 'end');
     // initialize request and response
     $this->getStep('init')->plug(new RequestWrapper())->as('request-wrapper')->plug(new ResponseInitializer())->as('response-initializer');
     $this->importPackages();
     // route request (this is done after packages have been loaded)
     $router = new MetaRouter([new PathMapperRouter(), new FastRouteRouter()]);
     $this->getStep('route')->plug($router)->as('router');
     // load framework native middleware
     $this->getStep('bootstrap')->plug(ServiceLoader::class)->asDefault('service-loader');
     // give access to config everywhere, including views
     //
     // Note: this is used by default layouts
     $this->getStep('bootstrap')->plug(function ($app) {
         Vars::$config = $app->getConfig();
     });
     // the dispatcher will actually run the matched route
     $this->getStep('route')->plug(new Dispatcher())->as('dispatcher');
     // handle view rendering
     $this->getStep('rendering')->plug(LayoutSwitcher::class, new UrlFilter('/'))->plug(new ViewResolver())->as('view-resolver')->plug(new ViewRenderer())->as('view-renderer');
     $this->getStep('end')->plug(new ResponseSender());
 }