⊗ppPmSDRt 444 of 447 menu

Einfaches Routing in einer PHP-Engine

In der vorherigen Lektion gab es auf unserer Website nur eine Gruppe von URLs. Normalerweise gibt es auf einer Website natürlich mehrere Arten von Adressen.

Jede Gruppe von Adressen wird durch einen eigenen regulären Ausdruck verarbeitet, die Routes genannt werden. Dementsprechend wird der Prozess des Zuordnens von Routes und des Codes für deren Verarbeitung als Routing bezeichnet.

Nehmen wir an, wir haben beispielsweise zwei Arten von Adressen. Lassen Sie uns für jede Gruppe eine eigene Route schreiben:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { // eine Seite anhand des Slugs } if (preg_match('#^/page/all$#', $url, $params)) { // Liste aller Seiten } ?>

Der Einfachheit halber lagern wir den Verarbeitungscode jeder Route in eine separate Datei aus:

<?php if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } ?>

Die eingebundenen Dateien sollten als Ergebnis ein Array mit dem Titel und dem Inhalt der Seite zurückgeben.

Lassen Sie uns den Code der ersten Datei schreiben, die eine Seite anhand ihres Slugs ausgibt:

<?php $slug = $params[1]; $query = "SELECT * FROM pages WHERE slug='$slug'"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); $page = mysqli_fetch_assoc($res); return $page; ?>

Und nun schreiben wir den Code der zweiten Datei, die eine Liste mit Links zu allen Seiten ausgibt:

<?php $query = "SELECT slug, title FROM pages"; $res = mysqli_query($link, $query) or die(mysqli_error($link)); for ($data = []; $row = mysqli_fetch_assoc($res); $data[] = $row); $content = ''; foreach ($data as $page) { $content .= ' <div> <a href="/page/' . $page['slug'] . '">' . $page['title'] . '</a> </div> '; } $page = [ 'title' => 'all pages', 'content' => $content ]; return $page; ?>

Nach der Ausführung einer der Bedingungen wird in der Variable $page immer ein Array mit einer Struktur vorhanden sein. Wir verwenden dieses Array, um Titel und Inhalt in das Website-Template einzusetzen:

<?php $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Fassen wir alles zusammen und erhalten folgenden Code:

<?php $url = $_SERVER['REQUEST_URI']; if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) { $page = include 'view/page/show.php'; } if (preg_match('#^/page/all$#', $url, $params)) { $page = include 'view/page/all.php'; } $layout = file_get_contents('layout.php'); $layout = str_replace('{{ title }}', $page['title'], $layout); $layout = str_replace('{{ content }}', $page['content'], $layout); echo $layout; ?>

Angenommen, Sie haben eine Website mit Benutzern. Erstellen Sie eine Seite zur Anzeige eines einzelnen Benutzers, eine Seite zur Auflistung aller Benutzer und eine Seite mit einem Formular zum Hinzufügen eines neuen Benutzers.

Deutsch
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wir verwenden Cookies für den Betrieb der Website, Analyse und Personalisierung. Die Datenverarbeitung erfolgt gemäß der Datenschutzerklärung.
alle akzeptieren anpassen ablehnen