Example #1
0
 /**
  * Load the Router by adding the web routes to it
  *
  * @return $this
  */
 protected function loadRouter() : self
 {
     assert('is_file($this->config["web_routes"]) && is_readable($this->config["web_routes"])', 'Directive web_routes must be a readable file in config');
     $cachedFile = 'file://' . $this->config['cache_dir'] . DIRECTORY_SEPARATOR . 'webRoutes.php';
     $routes = null;
     if (is_file($cachedFile)) {
         if (filemtime($cachedFile) > filemtime('file://' . $this->config['web_routes'])) {
             $routes = (require $cachedFile);
         }
     }
     if (is_null($routes)) {
         $routerParser = new RouterParser();
         $routerParser->parseFile('file://' . $this->config['web_routes']);
         $this->addHook(self::AFTER_SEND_RESPONSE, function () use($routerParser, $cachedFile) {
             $routerParser->writeRoutes($cachedFile, true);
         });
         $routes = $routerParser->getRoutes();
     }
     $this->router = new Router();
     $this->router->setWebUrlBase($this->config['web_url']);
     $this->router->setControllerNamespace($this->config['controller_namespace']);
     foreach ($routes as $name => $route) {
         $this->router->addRoute($name, $route);
     }
     return $this;
 }