Heim > Artikel > Backend-Entwicklung > Erstellen eines besseren Routers: Umgang mit VERSTECKTEN Eingaben und DELETE-Anfragen
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. Fangen wir an.
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 vermieden werden.
<input type="hidden" name="_method" value="DELETE">
Um eine Router-Datei zu erstellen, müssen wir die Router-Klasse mit einem Namespace initialisieren, in diesem Fall Core.
<?php namespace Core; class Router { }
Beim Erstellen der Router-Klasse 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 dabei 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); }
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 ]; }
Hier definieren wir die Routenmethode, 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(); }
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)
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(); }
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.
Zusammenfassend lässt sich sagen, dass wir einen besseren Router gebaut 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.
Das obige ist der detaillierte Inhalt vonErstellen eines besseren Routers: Umgang mit VERSTECKTEN Eingaben und DELETE-Anfragen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!