Altorrouter avec XAMPP
xampp/htdocs/AAA/public/index.php :
<?php
require '../vendor/autoload.php';
$router = new App\Router(dirname(__DIR__) . DIRECTORY_SEPARATOR .'book');
$router
->get('AAA/public/livre', 'AAA/book/post/index', 'livre')
->run();
dd($router);
?>
xampp/htdocs/AAA/src/Router.php :
<?php
namespace App;
class Router {
private $viewPath;
private $router;
public function __construct (string $viewPath) {
$this->viewPath = $viewPath;
$this->router = new \AltoRouter();
}
public function get (string $url, string $view, ?string $name = null): self {
$this->router->map('GET', $url, $view, $name);
return $this;
}
public function post (string $url, string $view, ?string $name = null): self {
$this->router->map('POST', $url, $view, $name);
return $this;
}
public function url (string $name, array $params = []) {
return $this->router->generate($name, $params);
}
public function run (): self {
$match = $this->router->match();
if ($match !== false && is_array($match) && isset($match['target'])) {
$view = $match['target'];
$router = $this;
ob_start();
require $this->viewPath . DIRECTORY_SEPARATOR . $view . '.php';
$content = ob_get_clean();
require $this->viewPath . DIRECTORY_SEPARATOR . 'layouts/default.php';
} else {
// Gérer le cas où aucune correspondance de route n'a été trouvée
echo dd($this->router);
}
return $this;
}
}
?>
Ce que je veux
Pour donner certaines informations, j'utilise le terminale de XAMPP pour composer.
Je veux mettre en place mon router. J'ai debuggé avec dd et je trouve que le problème est au niveau du match qui renvoie false: Voici quelques retours du debugger :
Ce que j'obtiens
dd($this) :
AltoRouter {#4 ▼
routes: array:1 [▼0 => array:4 [▼
0 => "GET"
1 => "AAA/public/livre"
2 => "AAA/book/post/index"
3 => "livre"
]
]
namedRoutes: array:1 [▼"livre" => "AAA/public/livre"
]
basePath: "" matchTypes: array:6 [▼"i" => "[0-9]++"
"a" => "[0-9A-Za-z]++"
"h" => "[0-9A-Fa-f]++"
"*" => ".+?"
"**" => ".++"
"" => "[^/\.]++"
]
}
dd($this->router) :
App\Router {#2 ▼
-viewPath: "C:\xampp\htdocs\AAA\book"
-router: AltoRouter {#4 ▼
0 => array:4 [▼
0 => "GET"
1 => "AAA/public/livre"
2 => "AAA/book/post/index"
3 => "livre"
]
]
#namedRoutes: array:1 [▼
"livre" => "AAA/public/livre"
]
#basePath: ""
#matchTypes: array:6 [▼
"i" => "[0-9]++"
"a" => "[0-9A-Za-z]++"
"h" => "[0-9A-Fa-f]++"
"*" => ".+?"
"**" => ".++"
"" => "[^/\.]++"
]
}
}
dd($match) : false
Merci de votre aide.