Heim  >  Artikel  >  Backend-Entwicklung  >  Routing-Bibliothek in PHP8.0

Routing-Bibliothek in PHP8.0

WBOY
WBOYOriginal
2023-05-14 12:51:061258Durchsuche

PHP ist eine weit verbreitete serverseitige Skriptsprache und viele Webanwendungen werden mit PHP entwickelt. In Webanwendungen ist Routing ein wesentlicher Bestandteil. Der Zweck des Routings besteht darin, Anfragen vom Browser an den richtigen Controller oder Handler zu verteilen.

PHP8.0 ist die neueste PHP-Version, die viele neue Funktionen und Verbesserungen mit sich bringt, darunter das Routing. Die Routing-Bibliothek in PHP8.0 ist eine leistungsstarke Bibliothek, die Webentwicklern hilft, Routing-Funktionen einfacher zu implementieren.

Der Name dieser Routing-Bibliothek ist FastRoute, es handelt sich um eine schnelle und flexible Routing-Bibliothek. Ziel ist es, eine schnelle und zuverlässige Routing-Lösung bereitzustellen. FastRoute unterstützt Funktionen wie RESTful-Routing, dynamisches Routing, Parameterabgleich und Routing mit regulären Ausdrücken.

Sehen wir uns an, wie Sie mit FastRoute Routing-Funktionen implementieren. Zuerst müssen wir die FastRoute-Bibliothek im PHP-Projekt installieren. Es kann mit Composer installiert werden:

composer require nikic/fast-route

Als nächstes müssen wir eine Router-Klasse erstellen und einige Routing-Regeln definieren. Diese Routing-Regeln bestimmen, wie Anfragen in unserer Webanwendung behandelt werden.

Hier ist ein Beispiel einer einfachen Router-Klasse:

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;
        }
    }
}

Im obigen Beispiel haben wir eine Klasse namens Router erstellt und die RouteCollector-Instanz von FastRoute übergeben. Diese Klasse verfügt über drei Methoden:

  • addRoute($httpMethod, $route, $handler): Wird zum Hinzufügen einer Routing-Regel verwendet. $httpMethod bezieht sich auf die HTTP-Anforderungsmethode wie GET, POST, PUT, DELETE usw. $route ist die Routing-Regel. $handler ist die Rückruffunktion, die den Controller und die Aktion enthält, die zur Bearbeitung der Anfrage verwendet werden.
  • dispatch($httpMethod, $uri): wird zum Versenden von Anfragen verwendet. $httpMethod bezieht sich auf die HTTP-Anforderungsmethode und $uri ist der angeforderte URI.
  • Handle 404/405: Wenn die angeforderte Routing-Regel nicht existiert oder die HTTP-Anforderungsmethode nicht unterstützt wird, müssen wir 404 Nicht gefunden oder 405 Methode nicht zulässig zurückgeben.

Als nächstes können wir einige Routing-Regeln definieren und sie zum Router hinzufügen, zum Beispiel:

$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');
    })
);

Im obigen Beispiel haben wir vier Routing-Regeln definiert. Die erste ist eine GET-Anfrage zum Anzeigen von Benutzerinformationen, die zweite ist eine POST-Anfrage zum Aktualisieren von Benutzerinformationen, die dritte ist eine DELETE-Anfrage zum Löschen von Benutzerinformationen und die letzte ist eine GET-Anfrage zum Anzeigen der Seite „Über uns“. Diese Routing-Regeln verwenden alle dynamisches Routing und Parameter (z. B. {id:d+}), mit denen Variablen aus der URL extrahiert und zur Verarbeitung an den Controller übergeben werden können.

Als nächstes können wir diese Router-Klasse verwenden, um HTTP-Anfragen zu verarbeiten. Zum Beispiel:

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

Im obigen Code haben wir $_SERVER['REQUEST_METHOD'] und $_SERVER['REQUEST_URI'] verwendet, um die HTTP-Methode und den URI der Anfrage abzurufen und sie zur Verarbeitung an die Dispatch-Methode zu übergeben. Basierend auf der HTTP-Methode und dem URI der Anfrage ruft der Router die entsprechenden Controller und Handler auf, um die Anfrage zu bearbeiten.

Zusammenfassung:

Routing ist eine Schlüsselkomponente einer Webanwendung. Es bestimmt, wie die Anwendung Anfragen vom Browser verarbeitet. FastRoute ist eine schnelle und flexible Routing-Bibliothek, die viele Funktionen bietet, darunter RESTful-Routing, dynamisches Routing, Parameterabgleich und Routing mit regulären Ausdrücken. Mit der FastRoute-Bibliothek in PHP8.0 können wir Routing-Funktionen einfacher implementieren und die Effizienz und Zuverlässigkeit von Webanwendungen verbessern.

Das obige ist der detaillierte Inhalt vonRouting-Bibliothek in PHP8.0. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn