Vor ein paar Tagen habe ich gelernt, einen einfachen Router zu bauen, der URLs Controllern zuordnet. Jetzt muss ich es verbessern, um einen besseren Router mit erweiterter Funktionalität zu bauen. Um einen besseren Router zu erstellen, der mit versteckten Eingaben arbeitet, löschen Sie zunächst die Basisdatei router.php aus dem Projekt und erstellen Sie eine neue. Lasst uns beginnen.
Wir müssen einen besseren Router bauen, der URLs effizient bestimmten Controllern oder Aktionen zuordnet, sodass unsere Anwendung Anfragen verarbeiten und an die entsprechenden Handler weiterleiten kann.
Die Fähigkeit des besseren Routers, mit versteckten Eingaben zu arbeiten, ermöglicht das sichere Löschen von Notizen, indem die Notiz-ID an den Controller übergeben wird, ohne sie in der URL offenzulegen, wodurch Benutzereingriffe verhindert werden.
Um eine Router-Datei zu erstellen, müssen wir die Router-Klasse mit einem Namespace initialisieren, in diesem Fall Core.
Öffentliche Funktionen (gemeinsame Parameter)
Wenn die Router-Klasse erstellt wird, müssen wir darin öffentliche Funktionen definieren und alle haben dieselben Parameter wie „Get“, „Post“, „Delete“, „Patch“ und „Put“ als wesentliche Routen, die unserer Website helfen, zu bestimmen, was zu tun ist, wenn jemand eine bestimmte besucht Seite. Diese Funktionen verfügen über dieselben Parameter und können daher dieselben Aktionen ausführen.
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); }Methode hinzufügen
Da alle öffentlichen Funktionen dieselben Parameter haben, verwenden wir die Add-Methode und geben ihr dieselben Parameter, und zwar nur, um dies in anderen Funktionen aufzurufen. Es wird verwendet, um der Routing-Karte eine neue Route hinzuzufügen, wobei drei Parameter verwendet werden: die Anforderungsmethode, das abzugleichende URI-Muster und die Controller-Datei zur Verarbeitung der Anforderung.
public function add($method, $uri, $controller) { $this->routes[] = [ 'uri' => $uri, 'controller' => $controller, 'method' => $method ]; }Routenmethode
Hier definieren wir die Route-Methode, um die Antwort unserer Anwendung auf eine bestimmte URL zu bestimmen und sie dem entsprechenden Controller zuzuordnen, der die Anfrage verarbeitet.
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(); }strtoupper-Funktion
In der Route-Methode verwenden wir die Funktion strtoupper, um eine Zeichenfolge in Großbuchstaben umzuwandeln und so eine Übereinstimmung ohne Berücksichtigung der Groß- und Kleinschreibung sicherzustellen.
strtoupper($method)Geschützte Funktion (Abbruch)
In der Datei router.php haben wir die Abbruchmethode als Sicherheitsnetz definiert, die eine Fehlerseite anzeigt, wenn unsere Website nicht die richtige Route finden kann.
protected function abort($code = 404) { http_response_code($code); require base_path("views/{$code}.php"); die(); }Routendefinitionen
Zuletzt müssen Sie die Routing-Konfiguration in der Datei „routes.php“ definieren und URLs den entsprechenden Controller-Aktionen zuordnen.
$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');Die Get-Methode gibt die Anforderungsmethode (GET) und das URL-Muster an und ordnet es einer Controller-Datei zu.
Abschluss
Zusammenfassend lässt sich sagen, dass wir einen besseren Router entwickelt haben, der URLs effizient bestimmten Controller-Methoden zuordnet, was einen strukturierteren und wartbareren Ansatz für die Bearbeitung von Anfragen ermöglicht und die Gesamtleistung und Skalierbarkeit unserer Website verbessert.
Ich hoffe, dass Sie es klar verstanden haben.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3