Guide de démarrage
Prérequis
- Avoir installé PHP 8.2 ou supérieur.
- Avoir installé Composer.
Installation
À l'aide de votre terminal, rendez-vous dans le dossier de votre projet et exécutez la commande suivante :
composer require quenti77/alterouter
Si ce n'est pas déjà fait, ajoutez dans votre fichier php le code suivant :
// Changez le chemin en fonction de votre projet
require __DIR__ . '/vendor/autoload.php';
Utilisation
Création d'un routeur
Pour créer un routeur, il suffit d'instancier la classe AlteRouter\Alterouter
:
$router = new AlteRouter\Alterouter();
Si votre projet est dans un sous-dossier, il faut préciser le chemin de ce sous-dossier :
$router = new AlteRouter\Alterouter('/sous-dossier');
Création d'une route
Pour créer une route, il existe plusieurs méthodes :
// Création d'une route avec la méthode générique
$router->addRoute('GET', '/path', function() {
echo 'Hello World !';
}, 'route-name');
Voici les paramètres de la méthode addRoute
:
string $method
: La méthode HTTP de la route. Les méthodes disponibles sont :GET
,POST
,PUT
,PATCH
,DELETE
,HEAD
,OPTIONS
.string $path
: Le chemin de la route. Les chemins peuvent contenir des paramètres. Les paramètres sont préfixés d'accolades. Exemple :/path/{id}
.callable|string $callback
: La fonction à exécuter lorsque la route est appelée. La valeur peut être une fonction anonyme ou une chaîne de caractères qui vous sera utile pour vous.string $name = null
: Le nom de la route. Ce paramètre est optionnel.
// Création d'une route avec la méthode GET
$router->get('/path', function() {
echo 'Hello World !';
}, 'route-name');
Contrairement à la méthode addRoute
, la méthode get
ne prend pas en paramètre la méthode HTTP de la route, car cette méthode est spécifique à la méthode GET
.
Il existe une méthode pour chaque méthode HTTP : get
, post
, put
, patch
, delete
, head
, options
.
Match d'une route
Pour matcher une route, il suffit d'appeler la méthode match
avec la méthode HTTP et l'URL de la route. Vous pouvez vous aider de la classe AlteRouter\Request
pour récupérer la méthode HTTP et l'URL de la route.
$route = $router->match(AlteRouter\Request::getMethodFromGlobals(), AlteRouter\Request::getPathFromGlobals());
Si la route n'est pas trouvée, la méthode match
retourne null
. Sinon, elle retourne un objet AlteRouter\Route
.
Exécution d'une route
En fonction de si la route trouvée à un handler avec une fonction anonyme ou une chaîne de caractères, vous devez exécuter la route différemment. Voici un exemple :
$route = $router->match(AlteRouter\Request::getMethodFromGlobals(), AlteRouter\Request::getPathFromGlobals());
if ($route !== null) {
if (is_string($route->getHandler())) {
[$controller, $method] = explode('@', $route->getHandler());
$controller = new $controller();
$controller->$method($route->getMatches());
} else {
call_user_func_array($route->getHandler(), $route->getMatches());
}
}
Ceci est un exemple simple pour vous montrer comment exécuter une route. Vous pouvez coder votre propre système.