Création d'un meilleur routeur : gestion des entrées HIDDEN et de la demande DELETE

PHPz
Libérer: 2024-07-17 00:44:00
original
417 Les gens l'ont consulté

Creating a Better Router : Handling HIDDEN Inputs and DELETE request

Il y a quelques jours, j'ai appris à construire 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.

Introduction au routage

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.

<input type="hidden" name="_method" value="DELETE">
Copier après la connexion

Créer un fichier de routeur

Pour créer un fichier routeur, nous devons initialiser la classe Router avec un espace de noms, dans ce cas, Core.

<?php 

namespace Core;

 class Router { }
Copier après la connexion

Fonctions publiques (paramètres communs)

Au fur et à mesure que la classe du routeur est construite, nous devons y définir des fonctions publiques et toutes ont les mêmes paramètres comme 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); }
Copier après la connexion

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 
  ]; 
}
Copier après la connexion

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(); 
}
Copier après la connexion

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)
Copier après la connexion

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(); 
}
Copier après la connexion

Définitions d'itinéraire

La dernière chose est de 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');
Copier après la connexion

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!