Sprache:

Suche

Erstellen Sie Ihren eigenen PHP-Router auf einfachste Weise

  • Teilen:
Erstellen Sie Ihren eigenen PHP-Router auf einfachste Weise

Einführung

Inspiriert vom Laravel-Router bauen wir unseren eigenen PHP-Router für die Verwaltung unserer Endpunkte für unsere nächste PHP-Projekt.

Einrichten

Legen wir ein neues Verzeichnis für unser Demoprojekt an und erstellen ein paar Dateien, die wir verwenden werden, z.B. index.php & router.php.

Grundlegende Fluss wäre wie, in unserem index.php, werden wir unsere Routen und Endpunkte einrichten & einfach die Daten in den Rückrufe übergeben.

In unserem router.php, fügen Sie den folgenden Code ein.

<?php

/**
 * Holds the registered routes
 *
 * @var array $routes
 */
$routes = [];

/**
 * Register a new route
 *
 * @param $action string
 * @param \Closure $callback Called when current URL matches provided action
 */
function route($action, Closure $callback)
{
    global $routes;
    $action = trim($action, '/');
    $routes[$action] = $callback;
}

/**
 * Dispatch the router
 *
 * @param $action string
 */
function dispatch($action)
{
    global $routes;
    $action = trim($action, '/');
    $callback = $routes[$action];

    echo call_user_func($callback);
}

Wie Sie sehen können, gibt es hier zwei Hauptfunktionen, eine davon ist route(), die eine Aktion und einen Rückruf annimmt. Diese route()-Methode bestimmt die Aktion und gibt den angegebenen Callback zurück. Die andere Funktion ist dispatch() und akzeptiert nur eine Aktion.

Jetzt innerhalb unserer index.php, können wir einfach wie aufrufen.

<?php

require_once "router.php";

route('/', function () {
    return "Hello World";
});

route('/about', function () {
    return "Hello form the about route";
});

$action = $_SERVER['REQUEST_URI'];
dispatch($action);

Lesen Sie auch: Erstellen eines PHP-Routers mit benannten URL-Segmenten

Video-Anleitung

Github Repo

https://github.com/azeemhassni/simplest-php-router

Azeem Hassni

Azeem Hassni

I write code and i love it. I do write blogs on things which I am passionate about. I love to Explore the internet of things and whats new in web technologies. My topic of Interests include WordPress, Laravel & Magento to name a few.