/** * On lance le dispatch de la requete avec les routes inséré * @param Response $response * @return bool */ public function perform(\Router\Response $response) { // ajout de la route global si existe $aApplyRoute = $this->routes['ANY']; if (isset($this->routes[$this->method])) { $aApplyRoute = array_merge($this->routes[$this->method], $aApplyRoute); } if (!empty($aApplyRoute)) { require_once __DIR__ . "/Route.php"; foreach ($aApplyRoute as $route) { // récuperation des params de la route et creation de l'objet pour test list($pattern_uri, $callback, $filters) = $route; $oRoute = new \Router\Route($pattern_uri, array_merge($this->filters, $filters)); if (false === ($params = $oRoute->match($this->request->getRequestUri()))) { continue; } // insert des params dans le request foreach ($params as $key => $value) { $this->request->setParam($key, $value); } // appel du callback si c'est possible if (is_callable($callback) === true) { ob_start(); call_user_func_array($callback, array($this->request, $response)); $response->appendBody(ob_get_contents()); ob_end_clean(); } return true; } unset($oRoute); } // renvoi false si aucune regle n'est passé return false; }