Overview

Namespaces

  • InfoContact
    • IcFwk
      • Library
      • Router
  • PHP

Classes

  • Route
  • Router
  • Overview
  • Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Download
 1: <?php
 2: 
 3: namespace InfoContact\IcFwk\Router;
 4: 
 5: class Router {
 6:     
 7:     /** @var array $routes Liste des routes de l'application */
 8:     static private $routes = [];
 9:     const NO_ROUTE = 1;
10:     
11:     /**
12:      * Ajoute une route dans la liste des routes
13:      * @param \InfoContact\IcFwk\Router\Route $route La route à ajouté
14:      * @return void
15:      */
16:     static public function addRoute(\InfoContact\IcFwk\Router\Route $route) {
17:         if(!in_array($route, self::$routes)) {
18:             $this->routes[] = $route;
19:         }
20:     }
21:     
22:     /**
23:      * Retourne la route correspondant à l'URL passée en paramètre
24:      * @param string $url L'URL dont on souhaite connaitre la route correspondante
25:      * @return \InfoContact\IcFwk\Router\Route L'ojet route correspondant
26:      * @throws \RuntimeException 
27:      */
28:     static public function getRoute($url) {
29:         /* @var $route \InfoContact\IcFwk\Router\Route */
30:         foreach ($this->routes as $route) {
31:             if(($varsValues = $route->match($url)) !== false) {
32:                 $route->setVars($varsValues);
33:                 return $route;
34:             }
35:         }
36:         throw new \RuntimeException('Aucune route ne correspond à l\'URL', self::NO_ROUTE);
37:     }
38:     
39:     /**
40:      * Génère l'URL de la route dont les nom et les paramètres sont transmis
41:      * @param string $name Nom de la route
42:      * @param array $params Paramètre de la route
43:      * @return string URL générée
44:      * @throws \RuntimeException
45:      */
46:     static public function generate($name, $params = []) {
47:         /* @var $route \InfoContact\IcFwk\Router\Route */
48:         foreach ($this->routes as $route) {
49:             if($name == $route->getName()) {
50:                 return $route->generateUrl($params);
51:             }
52:         }
53:         throw new \RuntimeException('Aucune route ne correspond à l\'URL', self::NO_ROUTE);
54:     }
55:     
56: }
57: 
IcFwk API API documentation generated by ApiGen