Exemplo n.º 1
0
 /**
  * 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;
 }