亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Inhaltsverzeichnis
Key Takeaways
Routen
Eine einfache Route
Hinzufügen eines Parameters
Verwenden verschiedener Verben
filter
Filtergruppen
Projekt wachsen? Zeit für die Verwendung von Controllern!
Schlussfolgerung
h?ufig gestellte Fragen (FAQs) zum schnellen PHP -Routing mit Phroute
Was ist Phroute und warum ist es für das PHP -Routing wichtig? Es ist wichtig beim PHP -Routing, da es eine einfache und bequeme M?glichkeit bietet, Routen in Ihrer PHP -Anwendung zu definieren. Mit Phroute k?nnen Sie URLs in bestimmten Funktionen oder Methoden in Ihrer Anwendung zuordnen, sodass Sie den Code einfacher verwalten und organisieren k?nnen. Es unterstützt auch Routenparameter und Filter und gibt Ihnen mehr Kontrolle darüber, wie Ihre Anwendung auf verschiedene URLs reagiert.
Wie definiere ich Routen mit Phroute? Sie müssen zun?chst eine Instanz der PhrouterouteCollector -Klasse erstellen. Sie k?nnen dann die Routenmethode dieser Klasse verwenden, um Ihre Routen zu definieren. Die Routenmethode erfordert drei Parameter: die HTTP -Methode (get, post usw.), das URL -Muster und die Handler -Funktion oder -methode. Hier ist ein Beispiel:
Wie behandle ich Routenparameter mit Phroute?
$ router = new PhrouterouteCollector (); )) {
Wie debugge ich Routen in Phroute? Diese Methode gibt ein Array aller definierten Routen zurück, was für Debugging -Zwecke nützlich sein kann. Hier ist ein Beispiel:
Heim Backend-Entwicklung PHP-Tutorial Schnelles PHP -Routing mit Phroute

Schnelles PHP -Routing mit Phroute

Feb 20, 2025 pm 12:25 PM

Schnelles PHP -Routing mit Phroute

Phroute ist ein interessantes Paket: Es ist ein schneller regelm??iger, expressionsbasierter Router, den Sie problemlos in kleinen bis mittleren Projekten implementieren k?nnen. Es ist jedoch nicht nur sehr schnell: Es gibt Filter, Filtergruppen und benannte Routen. Sie k?nnen auch ein grundlegendes Controller -System verwenden, wenn die Dinge gr??er werden.

, dass wir heute sehen werden, wie man es benutzt und wie man seine Funktionen in einem Beispielprojekt implementiert. Au?erdem werden wir sehen, was sich unter der Motorhaube befindet: Phroute ist ein Ergebnis vieler Experimente und Tests verschiedener Personen.

Beginnen wir mit der Installation!

Key Takeaways

  • Phroute ist ein hocheffizientes, Regex-basiertes Routing-Paket ideal für kleine bis mittlere PHP
  • Die Installation von Phroute ist mit Komponisten unkompliziert, was die Geschwindigkeit und Einfachheit der Projekteinrichtung verbessert.
  • Phroute unterstützt eine Vielzahl von HTTP -Methoden und erm?glicht dynamische Routing mit optionalen Parametern, wodurch es für die API -Entwicklung und andere Webanwendungen vielseitig vielseitig ist.
  • Filter in Phroute k?nnen vor oder nach der Routenbehandlung angewendet werden, wobei ein leistungsstarkes Tool für die Zugriffskontrolle und die Datenvalidierung sowie die Verbesserung der Sicherheits- und Datenintegrit?t bereitgestellt werden.
  • W?hrend Phroute sich in der Routing -Leistung auszeichnet und einige andere Router wie die von Laravel erheblich übertroffen hat, fehlt es derzeit an fortgeschrittenen Controller -Funktionen und umfassenden Dokumentationen, Bereichen, die für die zukünftige Verbesserung identifiziert wurden.
installieren

Sie k?nnen Ihrem Projekt in Sekundenschnelle Phroute zu Ihrem Projekt hinzufügen. Fügen Sie diese Zeile einfach Ihrer Datei composer.json hinzu:

{ 
        "require": 
        { 
            "phroute/phroute": "1.*" 
        } 
    }
Geben Sie den Befehl composer install ein und Sie sind in. Jetzt gehen wir zu unserem Testprojekt.

Beispielprojekt und erstes Beispiel

Für ein besseres Verst?ndnis jedes Konzepts von Phroute ist es eine gute Idee, ein Beispielprojekt zum Arbeiten zu haben. Heute werden wir eine grundlegende API für einen Bücherdatenbankdienst erstellen.

Hier ist das Datenbankschema, das wir verwenden werden:

Schnelles PHP -Routing mit Phroute

Wenn Sie einige Tests durchführen m?chten, ist dies der SQL -Schema -Dump, den ich verwendet habe (mit zus?tzlichen Dummy -Daten).

<span>CREATE TABLE IF NOT EXISTS authors (id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(250) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
</span>
    <span>INSERT INTO authors (id, name) 
</span>    <span>VALUES 
</span>    <span>(1, 'Dan Brown'), 
</span>    <span>(2, 'Paulo Coelho');
</span>
    <span>CREATE TABLE IF NOT EXISTS categories (id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(250) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
</span>
    <span>INSERT INTO categories (id, name) 
</span>    <span>VALUES 
</span>    <span>(1, 'Thriller'), 
</span>    <span>(2, 'Novel');
</span>
    <span>CREATE TABLE IF NOT EXISTS books (id int(10) unsigned NOT NULL AUTO_INCREMENT,   title varchar(250) NOT NULL, isbn varchar(50) NOT NULL, year int(11) NOT NULL,   pages int(11) NOT NULL, author_id int(10) unsigned NOT NULL, category_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY author_id (author_id,category_id), KEY category_id (category_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7;
</span>
    <span>INSERT INTO books (id, title, isbn, year, pages, author_id, category_id) 
</span>    <span>VALUES 
</span>    <span>(1, 'The Zahir', '0-06-083281-9', 2005, 336, 2, 2), 
</span>    <span>(2, 'The Devil and Miss Prym', '0-00-711605-5', 2000, 205, 2, 2), 
</span>    <span>(3, 'The Alchemist', '0-06-250217-4', 1988, 163, 2, 2), 
</span>    <span>(4, 'Inferno', '978-0-385-53785-8', 2013, 480, 1, 1), 
</span>    <span>(5, 'The Da Vinci Code', '0-385-50420-9', 2003, 454, 1, 1), 
</span>    <span>(6, 'Angels & Demons', '0-671-02735-2', 2000, 616, 1, 1);</span>
Wir werden nichts wirklich Komplexes schreiben. Tats?chlich reicht es aus, einige Routen zu schreiben, um eine API -Anfrage auf sehr grundlegende Weise zu emulieren. Wenn Sie eine reale API schreiben m?chten, müssen Sie viele Konzepte wissen, aber heute werfen wir nur einen Blick auf Phroute.

Bevor wir mit bestimmten Routen beginnen, analysieren wir die Hauptanwendungsstruktur. Das werden wir in unsere Index.php -Datei einfügen.

<span><span><?php
</span></span><span>
</span><span>    <span>require 'vendor/autoload.php';
</span></span><span>
</span><span>    <span>function processInput($uri){        
</span></span><span>        <span>$uri = implode('/', 
</span></span><span>            <span>array_slice(
</span></span><span>                <span>explode('/', $_SERVER['REQUEST_URI']), 3));         
</span></span><span>
</span><span>            <span>return $uri;    
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>function processOutput($response){
</span></span><span>        <span>echo json_encode($response);    
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>function getPDOInstance(){
</span></span><span>        <span>return new PDO('mysql:host=localhost;dbname=booksapi;charset=utf8', 'root', '');
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>$router = new Phroute<span>\RouteCollector</span>(new Phroute<span>\RouteParser</span>);
</span></span><span>
</span><span>    <span>$router->get('hello', function(){ 
</span></span><span>        <span>return 'Hello, PHRoute!';   
</span></span><span>    <span>});
</span></span><span>
</span><span>    <span>$dispatcher = new Phroute<span>\Dispatcher</span>(router);
</span></span><span>
</span><span>    <span>try {
</span></span><span>
</span><span>        <span>$response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], processInput($_SERVER['REQUEST_URI']));
</span></span><span>
</span><span>    <span>} catch (Phroute<span>\Exception\HttpRouteNotFoundException</span> $e) {
</span></span><span>
</span><span>        <span>var_dump($e);      
</span></span><span>        <span>die();
</span></span><span>
</span><span>    <span>} catch (Phroute<span>\Exception\HttpMethodNotAllowedException</span> $e) {
</span></span><span>
</span><span>        <span>var_dump($e);       
</span></span><span>        <span>die();
</span></span><span>
</span><span>    <span>}
</span></span><span>
</span><span>    <span>processOutput($response);</span></span>
Wir haben drei Dienstprogrammmethoden: ProcessInput, ProcessOutput und GetPdoInstance. Wir werden die ersten beiden verwenden, um sicherzugehen, dass wir die richtige Eingabe und die richtige Ausgabe erhalten. Der dritte wird die erforderliche PDO -Instanz vorbereiten.

HINWEIS: Der zweite Parameter der Array_Slice -Methode ist aufgrund meines pers?nlichen spezifischen Projekts "3". ?ndern Sie es, wenn sich Ihre Basis -URL ?ndert.

Danach deklarieren wir unsere Routen mit dem Objekt $ router, Instanz der RouteController -Klasse. Anschlie?end erfolgt die Magie in der Methode $ dispatcher-> cispatch (), die zwei Parameter annimmt: die $ _server-Anforderungsmethode (GET, Post usw.) und die spezifische URI. Mit diesen Informationen ruft der Dispatcher die richtige Route auf und führt den Code in der Schlie?ung aus. Der Rückgabewert wird in der $ -Antwortvariablen gespeichert, die dem Methode ProcessOutput () angegeben wird, der ihn als JSON -Zeichenfolge wiederholt.

Wie Sie sehen k?nnen, haben wir in diesem speziellen Beispiel eine einzige Route deklariert: Hallo.

Hinweis: Wenn Sie m?chten, k?nnen Sie jedoch die tats?chliche Struktur verbessern. Erstellen Sie eine neue Datei und rufen Sie es Routes.php auf. Fügen Sie es dann direkt nach der Initialisierung von $ Router in der Datei "Main Index.php" hinzu: Sie haben alle Ihre Routen in einer separaten Datei. Meiner Meinung nach eine elegantere L?sung.

Das hei?t, Sie wissen jetzt alles, was Sie über die Grundstruktur unseres Beispiels brauchen.

Lassen Sie uns unsere ersten Routen machen!

Routen

Eine einfache Route

Ok, mal sehen, was wir mit Routen machen k?nnen und wie viel wir sie für unsere Bedürfnisse anpassen k?nnen.

Wir beginnen mit der einfachsten Sache: Die Autorenliste.

{ 
        "require": 
        { 
            "phroute/phroute": "1.*" 
        } 
    }

In der ersten Zeile deklarieren wir unseren Routennamen, Autoren.

testen wir die Route: Dies ist das Ergebnis.

<span>CREATE TABLE IF NOT EXISTS authors (id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(250) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
</span>
    <span>INSERT INTO authors (id, name) 
</span>    <span>VALUES 
</span>    <span>(1, 'Dan Brown'), 
</span>    <span>(2, 'Paulo Coelho');
</span>
    <span>CREATE TABLE IF NOT EXISTS categories (id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(250) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
</span>
    <span>INSERT INTO categories (id, name) 
</span>    <span>VALUES 
</span>    <span>(1, 'Thriller'), 
</span>    <span>(2, 'Novel');
</span>
    <span>CREATE TABLE IF NOT EXISTS books (id int(10) unsigned NOT NULL AUTO_INCREMENT,   title varchar(250) NOT NULL, isbn varchar(50) NOT NULL, year int(11) NOT NULL,   pages int(11) NOT NULL, author_id int(10) unsigned NOT NULL, category_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY author_id (author_id,category_id), KEY category_id (category_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7;
</span>
    <span>INSERT INTO books (id, title, isbn, year, pages, author_id, category_id) 
</span>    <span>VALUES 
</span>    <span>(1, 'The Zahir', '0-06-083281-9', 2005, 336, 2, 2), 
</span>    <span>(2, 'The Devil and Miss Prym', '0-00-711605-5', 2000, 205, 2, 2), 
</span>    <span>(3, 'The Alchemist', '0-06-250217-4', 1988, 163, 2, 2), 
</span>    <span>(4, 'Inferno', '978-0-385-53785-8', 2013, 480, 1, 1), 
</span>    <span>(5, 'The Da Vinci Code', '0-385-50420-9', 2003, 454, 1, 1), 
</span>    <span>(6, 'Angels & Demons', '0-671-02735-2', 2000, 616, 1, 1);</span>

toll!

Hinzufügen eines Parameters

Jetzt k?nnen wir einen Schritt nach vorne machen: Was ist mit dem Hinzufügen eines Parameters, um die Details eines einzelnen Autors angesichts der ID zu erhalten?

so etwas:

<span><span><?php
</span></span><span>
</span><span>    <span>require 'vendor/autoload.php';
</span></span><span>
</span><span>    <span>function processInput($uri){        
</span></span><span>        <span>$uri = implode('/', 
</span></span><span>            <span>array_slice(
</span></span><span>                <span>explode('/', $_SERVER['REQUEST_URI']), 3));         
</span></span><span>
</span><span>            <span>return $uri;    
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>function processOutput($response){
</span></span><span>        <span>echo json_encode($response);    
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>function getPDOInstance(){
</span></span><span>        <span>return new PDO('mysql:host=localhost;dbname=booksapi;charset=utf8', 'root', '');
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>$router = new Phroute<span>\RouteCollector</span>(new Phroute<span>\RouteParser</span>);
</span></span><span>
</span><span>    <span>$router->get('hello', function(){ 
</span></span><span>        <span>return 'Hello, PHRoute!';   
</span></span><span>    <span>});
</span></span><span>
</span><span>    <span>$dispatcher = new Phroute<span>\Dispatcher</span>(router);
</span></span><span>
</span><span>    <span>try {
</span></span><span>
</span><span>        <span>$response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], processInput($_SERVER['REQUEST_URI']));
</span></span><span>
</span><span>    <span>} catch (Phroute<span>\Exception\HttpRouteNotFoundException</span> $e) {
</span></span><span>
</span><span>        <span>var_dump($e);      
</span></span><span>        <span>die();
</span></span><span>
</span><span>    <span>} catch (Phroute<span>\Exception\HttpMethodNotAllowedException</span> $e) {
</span></span><span>
</span><span>        <span>var_dump($e);       
</span></span><span>        <span>die();
</span></span><span>
</span><span>    <span>}
</span></span><span>
</span><span>    <span>processOutput($response);</span></span>

Sie k?nnen einen Parameter mit einem Platzhalter {variable_name} mit demselben ausgew?hlten Namen als Parameter für den Verschluss übergeben. In diesem Beispiel haben wir einen {ID} -Plampenhalter, der dem Parameter $ ID entspricht. Sie k?nnen jeden gewünschten Parameter angeben: keine Grenzen.

Manchmal kann ein Parameter optional sein. Lassen Sie uns ein anderes Beispiel erstellen: Wenn wir die Books -URL verwenden, m?chten wir eine Liste aller Datenbankbücher abrufen. Wenn wir jedoch eine ID wie Bücher angeben/1, erhalten wir die Bücherliste der angegebenen Kategorie.

Hier gehen wir:

<span>$router->get('authors', function(){      
</span>        <span>$db = getPDOInstance();
</span>
        <span>$sql = 'SELECT * FROM authors;';  
</span>        <span>$st = $db->prepare($sql, array(PDO<span>::</span>ATTR_CURSOR => PDO<span>::</span>CURSOR_FWDONLY));
</span>
        <span>$st->execute();
</span>
        <span>$result = $st->fetchAll(PDO<span>::</span>FETCH_CLASS);
</span>	    
        <span>return $result;  
</span>    <span>});</span>

Hinzufügen eines "?" Nach dem Parameter -Platzhalter bedeutet dies optional. Natürlich ist es eine gute Idee, einen Standardwert in der Schlie?ungserkl?rung anzugeben.

Verwenden verschiedener Verben

Bis jetzt haben wir nur Routen erhalten. Was ist mit anderen HTTP -Verben?

Kein Problem. Schauen Sie sich hier an:

[{"id":"1","name":"Dan Brown"},{"id":"2","name":"Paulo Coelho"}]

Erstellen wir eine Beispiel -Postroute. Es ist Zeit, unserer Sammlung ein neues Buch hinzuzufügen!

<span>$router->get('author/{id}', function($id){      
</span>        <span>$db = getPDOInstance(); 
</span>
        <span>$sql = 'SELECT * FROM `authors` WHERE `id` = :id';     
</span>    
        <span>$st = $db->prepare($sql, array(PDO<span>::</span>ATTR_CURSOR => PDO<span>::</span>CURSOR_FWDONLY));
</span>        <span>$st->execute(array(':id' => $id));
</span>
        <span>$result = $st->fetchAll(PDO<span>::</span>FETCH_CLASS);
</span> 
        <span>return $result;
</span>    <span>});</span>

Stellen wir uns vor, wir haben ein Formular zum Ausfüllen mit Buchdaten: Das Aktionsattribut zeigt auf die Buchstra?e, die wir gerade erstellt haben!

Jetzt werden wir einen weiteren Schritt nach vorne machen: Es ist Zeit, unsere Routen zu schützen!

filter

Tats?chlich kann jeder, der in die Buchstabelle eintritt, ein neues Buch in unsere Sammlung einfügen. Das ist cool, aber das ist nicht so, als würde Dinge normalerweise laufen. Was ist, wenn wir unsere Routen schützen wollen? Filter sind das, was wir brauchen.

Filter sind den Routen sehr ?hnlich: Sie haben einen Namen und einen zugeordneten Verschluss, der ausgeführt wird, wenn der Filter irgendwo aufgerufen wird.

Also, was ist der Unterschied? Ein Filter kann leicht vor (oder nach) eine Route aufgerufen werden.

filter

machen wir ein Beispiel:

{ 
        "require": 
        { 
            "phroute/phroute": "1.*" 
        } 
    }

Zuallererst haben wir den Filter mit der Filter () -Methode des $ Router -Objekts deklariert. Die Syntax ist die gleiche wie bei einer Route. Wir geben ihm einen Namen und eine Schlie?ung, die zum richtigen Zeitpunkt ausgeführt wird.

ok, aber was ist die "richtige Zeit"?

Wir entscheiden uns jetzt dafür: Wir haben der Post () -Methode gerade einen dritten Parameter hinzugefügt. Dieser dritte Parameter ist ein Array, in dem wir den Schlüssel zuvor mit dem Namen des Filters (loggled_in) angeben. Von diesem Moment an, vor jedem einzelnen Anruf in die Buchstra?e, wird der Logged_in -Filter (und die Ausführung des Schlie?ungsinhalts) ebenfalls genannt.

In diesem speziellen Fall prüfen wir eine Sitzungsvariable user_id, um festzustellen, ob der Benutzer angemeldet ist.

Es gibt auch den After -Schlüssel, mit dem ein Filter direkt nach dem Routenanruf ausgeführt wird. Hier ist ein Beispiel.

<span>CREATE TABLE IF NOT EXISTS authors (id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(250) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
</span>
    <span>INSERT INTO authors (id, name) 
</span>    <span>VALUES 
</span>    <span>(1, 'Dan Brown'), 
</span>    <span>(2, 'Paulo Coelho');
</span>
    <span>CREATE TABLE IF NOT EXISTS categories (id int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(250) NOT NULL, PRIMARY KEY (id)) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;
</span>
    <span>INSERT INTO categories (id, name) 
</span>    <span>VALUES 
</span>    <span>(1, 'Thriller'), 
</span>    <span>(2, 'Novel');
</span>
    <span>CREATE TABLE IF NOT EXISTS books (id int(10) unsigned NOT NULL AUTO_INCREMENT,   title varchar(250) NOT NULL, isbn varchar(50) NOT NULL, year int(11) NOT NULL,   pages int(11) NOT NULL, author_id int(10) unsigned NOT NULL, category_id int(10) unsigned NOT NULL, PRIMARY KEY (id), KEY author_id (author_id,category_id), KEY category_id (category_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7;
</span>
    <span>INSERT INTO books (id, title, isbn, year, pages, author_id, category_id) 
</span>    <span>VALUES 
</span>    <span>(1, 'The Zahir', '0-06-083281-9', 2005, 336, 2, 2), 
</span>    <span>(2, 'The Devil and Miss Prym', '0-00-711605-5', 2000, 205, 2, 2), 
</span>    <span>(3, 'The Alchemist', '0-06-250217-4', 1988, 163, 2, 2), 
</span>    <span>(4, 'Inferno', '978-0-385-53785-8', 2013, 480, 1, 1), 
</span>    <span>(5, 'The Da Vinci Code', '0-385-50420-9', 2003, 454, 1, 1), 
</span>    <span>(6, 'Angels & Demons', '0-671-02735-2', 2000, 616, 1, 1);</span>

Wenn Sie ben?tigen, k?nnen Sie auch gleichzeitig mehr als einen Filter angeben.
Alles, was Sie tun müssen, ist eine Reihe von Zeichenfolgen anstelle einer einzigen Zeichenfolge zu verwenden.

<span><span><?php
</span></span><span>
</span><span>    <span>require 'vendor/autoload.php';
</span></span><span>
</span><span>    <span>function processInput($uri){        
</span></span><span>        <span>$uri = implode('/', 
</span></span><span>            <span>array_slice(
</span></span><span>                <span>explode('/', $_SERVER['REQUEST_URI']), 3));         
</span></span><span>
</span><span>            <span>return $uri;    
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>function processOutput($response){
</span></span><span>        <span>echo json_encode($response);    
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>function getPDOInstance(){
</span></span><span>        <span>return new PDO('mysql:host=localhost;dbname=booksapi;charset=utf8', 'root', '');
</span></span><span>    <span>}
</span></span><span>
</span><span>    <span>$router = new Phroute<span>\RouteCollector</span>(new Phroute<span>\RouteParser</span>);
</span></span><span>
</span><span>    <span>$router->get('hello', function(){ 
</span></span><span>        <span>return 'Hello, PHRoute!';   
</span></span><span>    <span>});
</span></span><span>
</span><span>    <span>$dispatcher = new Phroute<span>\Dispatcher</span>(router);
</span></span><span>
</span><span>    <span>try {
</span></span><span>
</span><span>        <span>$response = $dispatcher->dispatch($_SERVER['REQUEST_METHOD'], processInput($_SERVER['REQUEST_URI']));
</span></span><span>
</span><span>    <span>} catch (Phroute<span>\Exception\HttpRouteNotFoundException</span> $e) {
</span></span><span>
</span><span>        <span>var_dump($e);      
</span></span><span>        <span>die();
</span></span><span>
</span><span>    <span>} catch (Phroute<span>\Exception\HttpMethodNotAllowedException</span> $e) {
</span></span><span>
</span><span>        <span>var_dump($e);       
</span></span><span>        <span>die();
</span></span><span>
</span><span>    <span>}
</span></span><span>
</span><span>    <span>processOutput($response);</span></span>

Filtergruppen

Stellen wir uns einen Fall in der realen Welt vor: Nehmen wir an, wir haben drei Postrouten, eine für jedes Unternehmen (Autor, Buch, Kategorie). Es w?re langweilig, drei verschiedene Zeiten des protokollierten Filters hinzuzufügen.

Mach dir keine Sorgen: Filtergruppen sind hier, um zu helfen.

<span>$router->get('authors', function(){      
</span>        <span>$db = getPDOInstance();
</span>
        <span>$sql = 'SELECT * FROM authors;';  
</span>        <span>$st = $db->prepare($sql, array(PDO<span>::</span>ATTR_CURSOR => PDO<span>::</span>CURSOR_FWDONLY));
</span>
        <span>$st->execute();
</span>
        <span>$result = $st->fetchAll(PDO<span>::</span>FETCH_CLASS);
</span>	    
        <span>return $result;  
</span>    <span>});</span>

Mit dieser einzelnen Gruppe haben wir denselben Filter für drei verschiedene Routen definiert.

HINWEIS: Wenn Sie ben?tigen, k?nnen Sie so oft in anderen Gruppen in anderen Gruppen nisten.

Projekt wachsen? Zeit für die Verwendung von Controllern!

Unser Projekt w?chst auf und organisiert unsere Codebasis in einer einzelnen Datei wirklich schwer und schlampig. Was ist mit Controllern?

Ja: Phroute handelt nicht nur um Routen. Wenn die Dinge wild werden, ist es Zeit, sie zu organisieren.

Lassen Sie uns zuerst sehen, wie die Struktur eines Controllers ist. Schauen Sie sich dieses Beispiel an (wir k?nnen es in unsere Routen.Php -Datei einfügen):

[{"id":"1","name":"Dan Brown"},{"id":"2","name":"Paulo Coelho"}]

Wir haben eine Autorenklasse erstellt. In dieser Klasse setzen wir zwei Methoden ein: getIndex () und postadd ().

Dann verknüpfen wir mit der CONTROLLER () -Methode des $ Router -Objekts die Autoren -URL mit der Autorenklasse. Wenn wir also den URL -Autor in unserem Browser eingeben, wird die GetIndex () -Methode automatisch aufgerufen. Gleiches gilt für die PostAdd () -Methode, die an den Autor/add (post) url gebunden ist.

Diese automatische Aufl?sungsname -Funktion ist sehr interessant, aber eigentlich nicht genug.

Der Controller -Teil befindet sich in einem frühen Stadium der Entwicklung und braucht viele Verbesserungen. Eine davon ist die M?glichkeit, Parameter für Controller -Methoden zu definieren. Oder vielleicht eine einfache M?glichkeit, Filter für einige Methoden eines Controllers zu definieren (und nicht ?alles oder nichts“).

Schlussfolgerung

Es gibt noch viel Arbeit, insbesondere auf der Controller -Seite. Als Entwickler denke ich, dass es gro?artig w?re, eine generische grundlegende Controller -Klasse zu haben, um alle schmutzigen Arbeiten zu erledigen (mit Filtern, Methodenparametern usw.). Es gibt auch mangelnde Dokumentation.

Andererseits kommt Phroute mit einem sehr schnellen Router. Auf der GitHub -Seite des Projekts sehen Sie einige Statistiken über einen Vergleich mit dem Kernrouter von Laravel: Die Ergebnisse sind erstaunlich. Im schlimmsten Fall ist Phroute ungef?hr vierzig (ja, 40) Mal schneller.

Wenn Sie bestimmte Details über den ?Engine“ hinter diesem Router kennen m?chten, k?nnen Sie die Nikic -Seite auf Github besuchen, wo er alle mit Tests, Benchmarks und verwandten Ergebnissen erkl?rte.

Wirst du Phroute probieren? Lassen Sie mich wissen, was Sie darüber denken!

h?ufig gestellte Fragen (FAQs) zum schnellen PHP -Routing mit Phroute

Was ist Phroute und warum ist es für das PHP -Routing wichtig? Es ist wichtig beim PHP -Routing, da es eine einfache und bequeme M?glichkeit bietet, Routen in Ihrer PHP -Anwendung zu definieren. Mit Phroute k?nnen Sie URLs in bestimmten Funktionen oder Methoden in Ihrer Anwendung zuordnen, sodass Sie den Code einfacher verwalten und organisieren k?nnen. Es unterstützt auch Routenparameter und Filter und gibt Ihnen mehr Kontrolle darüber, wie Ihre Anwendung auf verschiedene URLs reagiert.

Wie installiere ich Phroute in meiner PHP -Anwendung? PHP -Anwendung mit Composer, einem Abh?ngigkeitsmanagement -Tool für PHP. Sie k?nnen den Komponisten installieren, indem Sie die Anweisungen auf der offiziellen Website befolgen. Sobald Sie den Komponisten installiert haben, k?nnen Sie Phroute installieren, indem Sie den folgenden Befehl in Ihrem Terminal ausführen: Composer ben?tigt Phroute/Phroute. Dadurch wird Phroute in Ihrer Anwendung heruntergeladen und installiert.

Wie definiere ich Routen mit Phroute? Sie müssen zun?chst eine Instanz der PhrouterouteCollector -Klasse erstellen. Sie k?nnen dann die Routenmethode dieser Klasse verwenden, um Ihre Routen zu definieren. Die Routenmethode erfordert drei Parameter: die HTTP -Methode (get, post usw.), das URL -Muster und die Handler -Funktion oder -methode. Hier ist ein Beispiel:

$ router = new phrouterouteCollector (); "Benutzer -ID: $ id";

})

Wie behandle ich Routenparameter mit Phroute?

Routenparameter sind Teile der URL, die variieren k?nnen. In Phroute k?nnen Sie Routenparameter definieren, indem Sie diese in das URL -Muster aufnehmen, wenn Sie Ihre Routen definieren. Routenparameter sind in lockigen Klammern eingeschlossen {}. Wenn eine Route übereinstimmt, werden die Werte der Routenparameter als Argumente an die Handler -Funktion oder -methode übergeben. Hier ist ein Beispiel:

$ router = new phrouterouteCollector (); "Benutzer -ID: $ id";
});

Wie verwende ich Filter mit Phroute? Phroute sind Funktionen oder Methoden, die vor oder nach einer Route ausgeführt werden. Sie k?nnen verwendet werden, um Aufgaben wie Authentifizierung oder Eingabevalidierung auszuführen. Sie k?nnen Filter mithilfe der Filtermethode der PhrouterouteCollector -Klasse definieren und sie mit den Vor- und Nachher -Methoden auf Routen anwenden. Hier ist ein Beispiel:

$ router = new PhrouterouteCollector (); )) {

return false;

}
}); ['DashboardController', 'show'])-> vor ('auth'); Dies tritt auf, wenn keine Route mit der angeforderten URL übereinstimmt. Sie k?nnen einen 404 -Handler mit der Notfundmethode der PhrouterouteCollector -Klasse definieren. Der 404 -Handler ist eine Funktion oder Methode, die auftritt, wenn ein 404 -Fehler auftritt. Hier ist ein Beispiel:

$ router = new PhrouterouteCollector (); ??>
Wie versende ich Routen mit Phroute? PHROUTEROUTEDISPATCHER -KLASSE. Die Versandmethode dieser Klasse nimmt die HTTP -Methode und die URL als Parameter an und gibt das Ergebnis der Handler -Funktion oder -methode der übereinstimmenden Route zurück. Hier ist ein Beispiel:

$ dispatcher = new phrouteroutedispatcher ($ router-> getData ());
$ response = $ dispatcher-> Dispatch ($ _ Server ['Request_Method'], $ _server ['Request_uri ']); Frameworks?

Ja, Sie k?nnen Phroute mit anderen PHP -Frameworks verwenden. Phroute ist eine eigenst?ndige Bibliothek, was bedeutet, dass sie nicht von einem bestimmten Framework abh?ngt. Sie k?nnen es in jeder PHP -Anwendung verwenden, unabh?ngig vom von Ihnen verwendeten Framework. M?glicherweise müssen Sie jedoch Ihren Code anpassen, um mit dem Routing -System Ihres Frameworks zu arbeiten.

Wie debugge ich Routen in Phroute? Diese Methode gibt ein Array aller definierten Routen zurück, was für Debugging -Zwecke nützlich sein kann. Hier ist ein Beispiel:

$ router = new phrouterouteCollector (); "Benutzer-ID: $ id";
});
print_r ($ router-> debug ()); Ausnahmen in Phroute? Wenn w?hrend des Versandvorgangs eine Ausnahme ausgel?st wird, k?nnen Sie sie fangen und angemessen umgehen. Hier ist ein Beispiel:

Versuchen $ _Server ['request_uri']); {
echo 'Es ist ein Fehler aufgetreten:'. $ e-> getMessage ();
}

Das obige ist der detaillierte Inhalt vonSchnelles PHP -Routing mit Phroute. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
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

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Hei?e Themen

PHP-Tutorial
1488
72
Variabler PHP -Bereich erkl?rt Variabler PHP -Bereich erkl?rt Jul 17, 2025 am 04:16 AM

H?ufige Probleme und L?sungen für den variablen PHP -Umfang umfassen: 1. Die globale Variable kann innerhalb der Funktion nicht zugegriffen werden, und sie muss bei der Verwendung des globalen Schlüsselworts oder Parameters übergeben werden. 2. Die statische Variable wird statisch deklariert und nur einmal initialisiert und der Wert wird zwischen mehreren Aufrufen beibehalten. 3.. Hyperglobale Variablen wie $ _get und $ _post k?nnen direkt in jedem Bereich verwendet werden, aber Sie müssen auf eine sichere Filterung achten. 4. Die anonymen Funktionen müssen über das Schlüsselwort verwenden, und wenn Sie externe Variablen ?ndern, müssen Sie eine Referenz übergeben. Das Beherrschen dieser Regeln kann dazu beitragen, Fehler zu vermeiden und die Code -Stabilit?t zu verbessern.

Wie behandle ich Datei -Uploads sicher in PHP? Wie behandle ich Datei -Uploads sicher in PHP? Jul 08, 2025 am 02:37 AM

Um PHP -Datei -Uploads sicher zu verarbeiten, müssen Sie die Quelle und die Type und die Eingabe des Dateinamens und des Pfades überprüfen, Serverbeschr?nkungen festlegen und Mediendateien zweimal verarbeiten. 1. überprüfen Sie die Upload -Quelle, um CSRF durch Token zu verhindern, und erkennen Sie den realen MIME -Typ über die Finfo_file mithilfe der Whitelist -Steuerung. 2. Benennen Sie die Datei in eine zuf?llige Zeichenfolge um und bestimmen Sie die Erweiterung, um sie gem?? dem Erkennungstyp in einem Verzeichnis ohne Web zu speichern. 3. Die PHP -Konfiguration begrenzt die Hochladengr??e und das tempor?re Verzeichnis Nginx/Apache verbietet den Zugriff auf das Upload -Verzeichnis. 4. Die GD -Bibliothek stellt die Bilder neu, um potenzielle b?swillige Daten zu l?schen.

Code in PHP aus dem Code ausgehen Code in PHP aus dem Code ausgehen Jul 18, 2025 am 04:57 AM

Es gibt drei g?ngige Methoden für den PHP -Kommentarcode: 1. Verwenden Sie // oder #, um eine Codezeile zu blockieren, und es wird empfohlen, // zu verwenden. 2. Verwenden Sie /.../, um Codebl?cke mit mehreren Zeilen zu wickeln, die nicht verschachtelt werden k?nnen, aber gekreuzt werden k?nnen. 3.. Kombinationskenntnisse Kommentare wie die Verwendung / if () {} / Um Logikbl?cke zu steuern oder um die Effizienz mit Editor -Verknüpfungsschlüssel zu verbessern, sollten Sie auf die Schlie?ung von Symbolen achten und das Verschachteln bei der Verwendung vermeiden.

Wie arbeiten Generatoren in PHP? Wie arbeiten Generatoren in PHP? Jul 11, 2025 am 03:12 AM

AgneeratorinphpiSamemory-effizientes WaytoiterateOverlargedatasetsByyieldingValueatimeinsteadofReturningThemallatonce.1.GeneratorsusetheyieldKeywordtoproduktenvaluesonDemand, ReducingMemoryUsage.2.TheyareusefulforfulforfulfordlingBiglopploups, Lesebiglochen, Leselungen, Lesebigs, Leselung, oder

Tipps zum Schreiben von PHP -Kommentaren Tipps zum Schreiben von PHP -Kommentaren Jul 18, 2025 am 04:51 AM

Der Schlüssel zum Schreiben von PHP -Kommentaren liegt in der Kl?rung des Zwecks und der Spezifikationen. Kommentare sollten "Warum" und nicht "was getan" erkl?ren, um Redundanz oder zu Einfachheit zu vermeiden. 1. Verwenden Sie ein einheitliches Format wie Docblock (/*/) für Klassen- und Methodenbeschreibungen, um die Lesbarkeit und die Kompatibilit?t der Werkzeuge zu verbessern. 2. Betonen Sie die Gründe für die Logik, z. B. warum JS -Sprünge manuell ausgeben müssen. 3. Fügen Sie eine übersichtsbeschreibung vor komplexem Code hinzu, beschreiben Sie den Prozess in Schritten und helfen Sie, die Gesamtidee zu verstehen. V. Gute Anmerkungen k?nnen die Kommunikationskosten senken und die Effizienz der Code -Wartung verbessern.

SchnellpHP -Installations -Tutorial SchnellpHP -Installations -Tutorial Jul 18, 2025 am 04:52 AM

Toinstallphpquickly, usexampponwindowsorhomebrewonmacos.1.onwindows, download undInstallxampp, SelectComponents, Startapache und PlaceFilesinhtdocscs.2.Anternativ, manuellinstallphpfrfr

So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu So greifen Sie in einer Zeichenfolge nach Index in PHP auf ein Zeichen zu Jul 12, 2025 am 03:15 AM

In PHP k?nnen Sie quadratische Klammern oder lockige Klammern verwenden, um Zeichenfolgenspezifikationsspezifische Indexzeichen zu erhalten, aber quadratische Klammern werden empfohlen. Der Index startet von 0 und der Zugriff au?erhalb des Bereichs gibt einen Nullwert zurück und kann keinen Wert zugewiesen; MB_SUBSTR ist erforderlich, um Multi-Byte-Zeichen zu verarbeiten. Zum Beispiel: $ str = "Hallo"; echo $ str [0]; Ausgabe H; und chinesische Zeichen wie Mb_Substr ($ str, 1,1) müssen das richtige Ergebnis erzielen. In den tats?chlichen Anwendungen sollte die L?nge der Zeichenfolge vor dem Schleifen überprüft werden, dynamische Zeichenfolgen müssen für die Gültigkeit verifiziert werden, und mehrsprachige Projekte empfehlen, Multi-Byte-Sicherheitsfunktionen einheitlich zu verwenden.

PHP lernen: Ein Anf?ngerführer PHP lernen: Ein Anf?ngerführer Jul 18, 2025 am 04:54 AM

Tolearnphpeffectival, startbysettingupalocalerverenVironmentusexs -LikexamppandacodeeditorikevScode.1) InstallxamppForapache, MySQL und Php.SeacodeeditorForsyntaxSupport.3) testyourscludingveliktingveliktelaThbiliodble.Neclyble.NektFile

See all articles