Maison >développement back-end >tutoriel php >Bibliothèque de routage en PHP8.0

Bibliothèque de routage en PHP8.0

WBOY
WBOYoriginal
2023-05-14 12:51:061324parcourir

PHP est un langage de script côté serveur largement utilisé et de nombreuses applications Web sont développées à l'aide de PHP. Dans les applications Web, le routage est un composant essentiel. Le but du routage est de distribuer les requêtes du navigateur au contrôleur ou gestionnaire approprié.

PHP8.0 est la dernière version de PHP, qui apporte de nombreuses nouvelles fonctionnalités et améliorations, dont le routage. La bibliothèque de routage de PHP8.0 est une bibliothèque puissante qui aide les développeurs Web à implémenter plus facilement les fonctions de routage.

Le nom de cette bibliothèque de routage est FastRoute, c'est une bibliothèque de routage rapide et flexible. Son objectif est de fournir une solution de routage rapide et fiable. FastRoute prend en charge des fonctions telles que le routage RESTful, le routage dynamique, la correspondance de paramètres et le routage d'expressions régulières.

Voyons comment utiliser FastRoute pour implémenter des fonctions de routage. Tout d’abord, nous devons installer la bibliothèque FastRoute dans le projet PHP. Il peut être installé à l'aide de Composer :

composer require nikic/fast-route

Ensuite, nous devons créer une classe de routeur et définir des règles de routage. Ces règles de routage détermineront la manière dont les demandes sont traitées dans notre application Web.

Voici un exemple de classe de routeur simple :

use FastRouteRouteCollector;

class Router
{
    private $routeCollector;

    public function __construct(RouteCollector $routeCollector)
    {
        $this->routeCollector = $routeCollector;
    }

    public function addRoute($httpMethod, $route, $handler)
    {
        $this->routeCollector->addRoute($httpMethod, $route, $handler);
    }

    public function dispatch($httpMethod, $uri)
    {
        $routeInfo = $this->routeCollector->dispatch($httpMethod, $uri);

        switch ($routeInfo[0]) {
            case FastRouteDispatcher::NOT_FOUND:
                // handle 404 Not found
                break;
            case FastRouteDispatcher::METHOD_NOT_ALLOWED:
                // handle 405 Method not allowed
                break;
            case FastRouteDispatcher::FOUND:
                $handler = $routeInfo[1];
                $vars = $routeInfo[2];
                // call $handler with $vars
                break;
        }
    }
}

Dans l'exemple ci-dessus, nous avons créé une classe appelée Router et l'avons transmise à l'instance RouteCollector de FastRoute. Cette classe a trois méthodes :

  • addRoute($httpMethod, $route, $handler) : utilisée pour ajouter une règle de routage. $httpMethod fait référence à la méthode de requête HTTP, telle que GET, POST, PUT, DELETE, etc. $route est la règle de routage. $handler est la fonction de rappel contenant le contrôleur et l'action utilisée pour gérer la requête.
  • dispatch($httpMethod, $uri) : utilisé pour envoyer les requêtes. $httpMethod fait référence à la méthode de requête HTTP et $uri est l'URI demandé.
  • handle 404/405 : lorsque la règle de routage demandée n'existe pas ou que la méthode de requête HTTP n'est pas prise en charge, nous devons renvoyer 404 Not found ou 405 Method not Allowed.

Ensuite, nous pouvons définir certaines règles de routage et les ajouter au routeur, par exemple :

$router = new Router(
    FastRoutesimpleDispatcher(function(FastRouteRouteCollector $r) {
        $r->addRoute('GET', '/user/{id:d+}', 'UserController@show');
        $r->addRoute('POST', '/user/{id:d+}', 'UserController@update');
        $r->addRoute('DELETE', '/user/{id:d+}', 'UserController@delete');
        $r->addRoute('GET', '/about', 'AboutController@index');
    })
);

Dans l'exemple ci-dessus, nous avons défini quatre règles de routage. La première est une requête GET pour afficher les informations utilisateur, la seconde est une requête POST pour mettre à jour les informations utilisateur, la troisième est une requête DELETE pour supprimer les informations utilisateur et la dernière est une requête GET pour afficher la page À propos de nous. Ces règles de routage utilisent toutes un routage dynamique et des paramètres (tels que {id:d+}), qui peuvent extraire des variables de l'URL et les transmettre au contrôleur pour traitement.

Ensuite, nous pouvons utiliser cette classe Router pour gérer les requêtes HTTP. Par exemple :

$router->dispatch($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);

Dans le code ci-dessus, nous avons utilisé $_SERVER['REQUEST_METHOD'] et $_SERVER['REQUEST_URI'] pour obtenir la méthode HTTP et l'URI de la requête, et les transmettre à la méthode de répartition pour traitement. En fonction de la méthode HTTP et de l'URI de la requête, le routeur appellera les contrôleurs et gestionnaires appropriés pour traiter la requête.

Résumé :

Le routage est un élément clé d'une application Web, il détermine la manière dont l'application gère les requêtes du navigateur. FastRoute est une bibliothèque de routage rapide et flexible qui fournit de nombreuses fonctionnalités, notamment le routage RESTful, le routage dynamique, la correspondance de paramètres et le routage d'expressions régulières. Grâce à la bibliothèque FastRoute de PHP8.0, nous pouvons implémenter plus facilement les fonctions de routage et améliorer l'efficacité et la fiabilité des applications Web.

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!

Déclaration:
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