Routing Etapes de routing Première étape Accès à un lien de l'application par l'utilisateur
redirection via .htaccess
sur le point d'entrée EagleCore/index.php
Lancement de l'application via Application::launch
Insertion et vérification des configurations dans l'ordre
fonctions globales
blade + twig
environnement
framework
Initialisation de la base de données si requis
Lancement du router
Routing Gestion de la maintenance Vérification dans l'environnement
Si accès déjà autorisé le routing continue
Sinon affichage de la page de maintenance ou lien spécial d'accès
Rendu du site Récupération de la route à afficher
Vérification des conditions d'accès
Gestion des données flash
Appel du controller et de la méthode de gestion
Première étape Routing Utilisateur .htaccess class 'Application' Insertion et vérification des configurations Initialisation de la base de données si requis Lancement du router Gestion de la maintenance Rendu de ressource Rendu du site Accès à un lien de l'application Redirection vers le point d'entrée EagleCore/index.php' Lancement de l'application méthode launch Dans l'ordre fonctions globales, blade + twig, environnement, framework Vérification dans l'environnement Vérification d'accès autorisé Continuer le routing Affichage de la page de maintenance ou lien spécial d'accès Récupération de la route à afficher Vérification des conditions d'accès Gestion des données flash Appel du controller et de la méthode de gestion Accès déjà autorisé ? Non Oui Vérification de ressource accessible Non
Enregistrement des routes routes.php
fichier utilisé par le framework permettant d'inclure les documents d'enregistrement d'api et web
web.php
sert à l'enregistrement des routes web
api.php
sert à l'enregistrement des routes d'api
La séparation des deux fichiers n'est que sémantique. Il est recommandé pour les routes d'api de débuter par la création d'un groupe /api
<?php
# routes d'api
use EagleCore\Routing\Routes\RouteManager;
RouteManager::registerGroup(
linksPrefix: "/api/:apiVersion",
routes: [],
genericParamsConfig: ["apiVersion" => "[0-9_]+"],
groupAccessVerifiers: []
);
# ou
RouteManager::registerGroup(
linksPrefix: "/api",
routes: [],
groupAccessVerifiers: []
);
Il faut différencier les class RouteManager
et Route
. La class Route
permet de créer une route, la class RouteManager
quant à elle sert à la gestion des routes par le framework, mais également à les enregistrer.
Enregistrement d'une route
<?php
use Yahvya\EagleFramework\Routing\Response\BladeResponse;
use Yahvya\EagleFramework\Routing\Routes\RouteManager;
RouteManager::registerRoute(
requestMethod: "GET",
link: "/",
toExecute: fn(): BladeResponse => new BladeResponse(
pathFromViews: "eagle",
datas: ["websiteLink" => "https://yahvya.github.io/personal-eagle-framework-doc/starter-topic.html"]
),
routeName: "eagle"
);
Les méthodes statiques de la class Route
représentent les différentes méthodes de requête couramment utilisées. [get, post, put, delete, patch, options, head, trace]
Enregistrement d'un groupe de routes
<?php
# routes d'api
use EagleCore\Routing\Routes\RouteManager;
use EagleCore\Routing\Response\BladeResponse;
use EagleCore\Routing\Routes\Route;
RouteManager::registerGroup(
linksPrefix: "/api",
routes: [
Route::get(
link: "/",
toExecute: fn():BladeResponse => new BladeResponse("eagle",["websiteLink" => "https://yahvya.github.io/eagle-final-doc/"]),
routeName: "eagle"
),
Route::get(
link: "/test",
toExecute: fn():BladeResponse => new BladeResponse("eagle",["websiteLink" => "https://yahvya.github.io/eagle-final-doc/"]),
routeName: "eagle"
)
],
groupAccessVerifiers: []
);
Ce code donnera les routes, accessible en get :
Paramètres de création de route Route::method(string $link, Closure|array $toExecute, string $routeName, array $genericParamsRegex = [], array $accessVerifiers = [])
$link
lien associé. Ce lien peut contenir des paramètres génériques au format défini par framework.php. Voir la définition de format
$toExecute
Callable à appeler pour traiter la requête
Le callable doit renvoyer une Response
et peut se faire injecter un type Request
ainsi que les paramètres génériques via leur nom
<?php
# pour la route /test/:username/test2
function treatmentFunction(Request $requestManager,string $username):JsonResponse{
return ["username" => $username];
}
ou
[Controller::class,"methodName"]
$routeName
nom unique de la route (format libre)
$genericParamsRegex
configuration des regex associés aux paramètres génériques
<?php
# pour la route /test/:articleName/:id
["articleName" => "[a-z\-0-9]+","id" => "[0-9]+"]
$accessVerifiers
Conditions de vérification d'accès à la route
<?php
[new Verifier(verifier: [CustomApiController::class,"checkApiAccess"],onFailure: [CustomApiController::class,"refuseApiAccess"])]
# ou
[new Verifier(verifier: fn(Request $requestManager):bool => false,onFailure: fn():RedirectResponse => ...]
La classe de vérification permet de définir toute une étape de vérification. La fonction de condition de vérification retournant un booléen, si false la fonction de gestion d'échec qui dans le cas des routes renvoi une Response
Les mêmes éléments sont posés sur la création de groupe de route, les conditions sont appliquées à toutes les sous routes.
Sous fichiers de route Pour apporter une meilleure organisation, des sous fichiers routes peuvent être créés via l'utilisation de RouteManager::fromFile
Cette fonction prend en paramètre le chemin du fichier sans son extension qui doit être .php avec comme racine le dossier routes
.
routes
web.php
routes.php
api.php
custom-routes
Pour charger le fichier authentication.php
, vous pouvez utiliser la fonction spécifiée ci-dessus dans le fichier web.php
.
RouteManager::fromFile(filename: "custom-routes/authentication");
Mode de développement Lors de la phase de routing le mode de développement défini si oui ou non la récupération d'exception non gérée est capturée ou non. Si dev mode à true
alors les erreurs ne sont pas capturées sinon elles le sont et la page d'erreur interne est affichée.
Mise à jour du mode dans l'environnement
13 août 2025