Ejemplo n.º 1
0
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $methodSearch = implode('|', $input->getOption('method'));
     $controllerSearch = implode('|', $input->getOption('controller'));
     $nameSearch = implode('|', $input->getOption('name'));
     $this->loadRoutes();
     $router = RouterManager::getInstance();
     $result = [];
     // Tous les types de routes GET, POST, ...
     foreach ($router->routes as $type => $routes) {
         // Toutes les routes du type
         foreach ($routes as $route) {
             $id = $route->getObjectId();
             // URL
             $path = $route->url;
             if (empty($path)) {
                 $path = '/';
             }
             // Contrôleur et méthode
             $controller = '';
             $action = $route->callable;
             if (is_string($action)) {
                 $action = explode('@', $action, 2);
                 if (count($action) == 2) {
                     $controller = $action[0];
                     $action = $action[1];
                 }
             } else {
                 $action = 'function';
             }
             // Nom de la route
             $name = $route->name;
             if (preg_match("#{$methodSearch}#i", $type) && preg_match("#{$controllerSearch}#i", $controller) && preg_match("#{$nameSearch}#i", $name)) {
                 $result[$id] = [];
                 $result[$id][] = $type;
                 $result[$id][] = $path;
                 $result[$id][] = $name;
                 $result[$id][] = $controller;
                 $result[$id][] = $action;
             }
         }
     }
     if (empty($result)) {
         $result = [['METHOD EMPTY', 'URL EMPTY', 'NAME EMPTY', 'CONTROLLER EMPTY', 'ACTION EMPTY']];
     }
     ksort($result);
     $output->writeln('');
     $table = new Table($output);
     $table->setHeaders(['METHOD', 'URL', 'NAME', 'CONTROLLER', 'ACTION']);
     $table->setRows($result);
     $table->render();
 }
Ejemplo n.º 2
0
 /**
  * Permet de tester les méthodes statiques pour le router
  */
 public function testRouterFactory()
 {
     Router::get('/', 'HomeController@index')->setName('index');
     Router::post('/', 'HomeController@insert')->setName('insert');
     Router::put('/{id:[0-9]+}', 'HomeController@update')->setName('update');
     Router::delete('/{id:[0-9]+}', 'HomeController@remove')->setName('remove');
     Router::group('/news', function () {
         Router::match(['get', 'post', 'patch', 'delete'], '/', 'NewsController@rest');
     });
     Router::any('/admin/news', 'AdminController@newsRest');
     $this->assertCount(5, RouterManager::getInstance()->routes);
     $this->assertCount(3, RouterManager::getInstance()->routes['GET']);
     $this->assertCount(3, RouterManager::getInstance()->routes['POST']);
     $this->assertCount(2, RouterManager::getInstance()->routes['PUT']);
     $this->assertCount(2, RouterManager::getInstance()->routes['PATCH']);
     $this->assertCount(3, RouterManager::getInstance()->routes['DELETE']);
     $this->assertTrue(Router::parse('/', 'get', false));
     $this->assertTrue(Router::parse('/1', 'put', false));
     $this->assertFalse(Router::parse('/users', 'get', false));
 }
Ejemplo n.º 3
0
 /**
  * On vérifie que l'on match bien les bonne routes
  * et que l'on récupère bien la bonne url
  */
 public function testParseAndGet()
 {
     $router = RouterManager::getInstance();
     $router->get('/news', 'NewsController@index');
     $router->post('/news', 'NewsController@insert');
     $router->get('/news/{id:[0-9]+}', 'NewsController@details');
     $this->assertTrue($router->parse('/news', 'get', false));
     $this->assertTrue($router->parse('/news', 'post', false));
     $this->assertTrue($router->parse('/news/1', 'get', false));
     $this->assertInstanceOf(Route::class, $router->parse('/news', 'get'));
     $this->assertFalse($router->parse('/news', 'put'));
     $this->assertFalse($router->parse('/news/a', 'get'));
     $this->assertFalse($router->parse('/news/1', 'post'));
     $this->assertFalse($router->parse('/news/1', 'ajax'));
     $this->assertEquals('news', $router->url('NewsController.index'));
     $this->assertEquals('news', $router->url('NewsController.insert'));
     $this->assertEquals('news/2', $router->url('NewsController.details', ['id' => 2]));
     $this->assertNull($router->url('NewsController.detailsInconnue', ['id' => 'a']));
 }
Ejemplo n.º 4
0
 /**
  * Permet de générer l'url en fonction du nom et des paramètres
  *
  * @param string $name Le nom de la route
  * @param array $parameters Les paramètres si besoin
  * @return string|null L'url avec les paramètres
  */
 public static function url($name, array $parameters = [])
 {
     return RouterManager::getInstance()->url($name, $parameters);
 }