Heim  >  Artikel  >  Backend-Entwicklung  >  Erstellen eines besseren Routers: Umgang mit VERSTECKTEN Eingaben und DELETE-Anfragen

Erstellen eines besseren Routers: Umgang mit VERSTECKTEN Eingaben und DELETE-Anfragen

PHPz
PHPzOriginal
2024-07-17 00:44:00497Durchsuche

Creating a Better Router : Handling HIDDEN Inputs and DELETE request

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.

Einführung in das Routing

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">

Erstellen Sie eine Router-Datei

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

Öffentliche Funktionen (gemeinsame Parameter)

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

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

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 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!

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
Vorheriger Artikel:Gib das Kissen weiterNächster Artikel:Gib das Kissen weiter