Il y a quelques jours, j'ai appris à créer un routeur de base qui mappe les URL aux contrôleurs. Maintenant, je dois l'améliorer pour créer un meilleur routeur doté de fonctionnalités avancées. Pour créer un meilleur routeur qui fonctionne avec des entrées cachées, supprimez tout d'abord le fichier router.php de base du projet et créez-en un nouveau. Commençons.
Nous devons créer un meilleur routeur qui mappe efficacement les URL à des contrôleurs ou des actions spécifiques, permettant à notre application de gérer les demandes et de les acheminer vers les gestionnaires appropriés.
La capacité du meilleur routeur à fonctionner avec des entrées cachées permet une suppression sécurisée des notes en transmettant l'ID de la note au contrôleur sans l'exposer dans l'URL, empêchant ainsi les interférences de l'utilisateur.
Pour créer un fichier routeur, nous devons initialiser la classe Router avec un espace de noms, dans ce cas, Core.
Fonctions publiques (paramètres communs)
Au fur et à mesure que la classe de routeur est construite, nous devons y définir des fonctions publiques et toutes ont les mêmes paramètres tels que get, post, delete, patch et put comme itinéraires essentiels qui aident notre site Web à déterminer quoi faire lorsque quelqu'un visite un certain page. Ces fonctions ont les mêmes paramètres, leur permettant d'effectuer les mêmes actions.
public function get($uri, $controller) { $this->add('GET', $uri, $controller); } public function post($uri, $controller) { $this->add('POST', $uri, $controller); } public function delete($uri, $controller) { $this->add('DELETE', $uri, $controller); } public function patch($uri, $controller) { $this->add('PATCH', $uri, $controller); } public function put($uri, $controller) { $this->add('PUT', $uri, $controller); }Ajouter une méthode
Comme toutes les fonctions publiques ont les mêmes paramètres, nous utilisons la méthode add et lui donnons les mêmes paramètres et uniquement pour l'appeler dans d'autres fonctions. Il est utilisé pour ajouter une nouvelle route à la carte de routage, en prenant trois paramètres : la méthode de requête, le modèle d'URI à correspondre et le fichier de contrôleur pour gérer la requête.
public function add($method, $uri, $controller) { $this->routes[] = [ 'uri' => $uri, 'controller' => $controller, 'method' => $method ]; }Méthode d'itinéraire
Ici, nous définissons la méthode de route pour déterminer la réponse de notre application à une URL donnée, en la mappant au contrôleur correspondant pour gérer la demande.
public function route($uri, $method) { foreach ($this->routes as $route) { if ($route['uri'] === $uri && $route['method'] === strtoupper($method)) { return require base_path($route['controller']); } } $this->abort(); }Fonction strtoupper
Dans la méthode route, nous utilisons la fonction strtoupper pour convertir une chaîne en majuscules, garantissant ainsi une correspondance insensible à la casse.
strtoupper($method)Fonction protégée (Abandonner)
Dans le fichier router.php, nous avons défini la méthode d'abandon comme un filet de sécurité, affichant une page d'erreur si notre site Web ne trouve pas le bon itinéraire.
protected function abort($code = 404) { http_response_code($code); require base_path("views/{$code}.php"); die(); }Définitions d'itinéraire
La dernière chose consiste à définir la configuration du routage dans le fichier routes.php, en mappant les URL aux actions du contrôleur correspondantes.
$router->get('/', 'controllers/index.php'); $router->get('/about', 'controllers/about.php'); $router->get('/contact', 'controllers/contact.php'); $router->get('/notes', 'controllers/notes/index.php'); $router->get('/note', 'controllers/notes/show.php'); $router->get('/notes/create', 'controllers/notes/create.php');La méthode get spécifie la méthode de requête (GET), le modèle d'URL et le mappe à un fichier de contrôleur.
Conclusion
En conclusion, nous avons construit un meilleur routeur qui mappe efficacement les URL à des méthodes de contrôleur spécifiques, permettant une approche plus structurée et maintenable du traitement des demandes et améliorant les performances globales et l'évolutivité de notre site Web.
J'espère que vous l'avez bien compris.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3