Créer une règle de routage
Comme vu dans la présentation du système de routage, des règles précises doivent être créées pour que Syme fonctionne correctement.
Au commencement, les méthodes HTTP...
Une requête HTTP est conçue sur la base de méthodes. Les méthodes connues et pratiquées par Syme sont:
GET
POST
PUT
DELETE
PATCH
OPTIONS
La méthode courante peut se retrouver via l'objet Request accessible depuis les callback, middlewares et composants personnalisés.
GET
La méthode GET correspond à la méthode par défaut, par exemple, quand le visiteur entre une URL dans la barre de son navigateur.
Route::get("nom de la règle", "/chemin/a/surveiller", {fonction à exécuter});
POST
La méthode POST est la méthode généralement employée lors de l'envoie de données par exemple.
Route::post("nom de la règle", "/chemin/a/surveiller", {fonction à exécuter});
PUT
La méthode PUT est généralement employée pour créer ou modifier de données.
Route::put("nom de la règle", "/chemin/a/surveiller", {fonction à exécuter});
PATCH
La méthode PATCH est utilisée pour signaler la modification de données.
Route::patch("nom de la règle", "/chemin/a/surveiller", {fonction à exécuter});
DELETE
La méthode DELETE, très souvent utilisée, permet de signaler au système de routage, qu'une donnée doit être supprimée.
Route::delete("nom de la règle", "/chemin/a/surveiller", {fonction à exécuter});
Les règles spéciales
any
Syme met à votre disposition la possibilité d'écouter toutes les méthodes connues pour un chemin particulier. Pour ce faire, la fonction any
sera utilisée:
Route::any("nom de la règle", "/chemin/a/surveiller", {fonction à exécuter});
map
Bien évidement, vous pouvez aussi dire au système de routage, de surveiller une liste de méthodes pour un chemin donné. Par exemple, nous allons écouter la méthode GET et POST pour un chemin qui s'occupera de renvoyer puis traiter un formulaire:
Route::map(['GET', 'POST'], "nom de la règle", "/chemin/a/surveiller", {fonction à exécuter});
Exemple concret:
<?php
declare(strict_types=1);
require_once './core.php';
use components\core\Request;
use components\core\Response;
use components\core\Route;
Route::map(['GET', 'POST'], 'form_test', '/', function (Request $request, Response $response): Response {
if ($request->getMethod() === 'POST' && $request->hasForm()) {
$response->writeObject($request->getForm());
} else {
$response->write('
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
</head>
<body>
<form method="post">
<input type="text" name="input1[]" value="" />
<input type="text" name="input1[]" value="" />
<input type="email" name="input2" value="" />
<input type="range" name="range" min="0" max="100" value="50" />
<input type="date" name="date" value="" />
<input type="submit" name="submit" value="Envoyer" />
</form>
</body>
</html>
');
}
return $response;
});
Dernière mise à jour