2017 © Pedro Peláez
 

library routing

PHP-Routing-System zur Verknüpfung von URLs mit Funktionen - Ideal für APIs (Web-Services) bzw. schöne (benutzerdefinierte) URLs.

image

drips/routing

PHP-Routing-System zur Verknüpfung von URLs mit Funktionen - Ideal für APIs (Web-Services) bzw. schöne (benutzerdefinierte) URLs.

  • Saturday, July 30, 2016
  • by KRaFFiX
  • Repository
  • 6 Watchers
  • 0 Stars
  • 292 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Routing

Build Status Code Climate Test Coverage Latest Release, (*1)

Beschreibung

Das Routing ist zuständig für die Auslösung der URLs zu PHP-Funktionen. Somit können (schöne) URLs manuell festgelegt werden., (*2)

Installation

Apache 2

Einfach eine .htaccess Datei im entsprechenden Verzeichnis hinzufügen:, (*3)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA]
</IfModule>

Hierfür muss das Rewrite-Modul (mod_rewrite) des Webservers aktiviert sein., (*4)

NGINX

Grundsätzlich müssen alle Anfragen an die index.php weitergeleitet werden. Hierfür kann folgende Konfiguration verwendet werden:, (*5)

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php;
    }
}

Verwendung

Anlegen eines Routers

Zuerst muss der Router geladen und angelegt werden., (*6)

<?php
use Drips\Routing\Router;

$router = Router::getInstance();

Hinzufügen von Routen

Nachdem ein entsprechender Router angelegt wurde, können für diesen Routen registriert werden., (*7)

<?php
$router->add("name_der_route", "/my/url", function(){
    echo "Hello World!";
});

Wird die URL /my/url aufgerufen, so wird die festgelegte Funktion ausgeführt und es wird Hello World! angezeigt., (*8)

Achtung: der Name der Route muss eindeutig sein. Ist der Name bereits vergeben, kann die Route nicht hinzugefügt werden., (*9)

MVC-Unterstützung

Das Routing-System unterstützt zusätzlich die Verwendung des Drips-MVC Systems. Dementsprechend kann beim Hinzufügen von Routen nicht nur eine Funktion sondern auch ein Controller übergeben werden:, (*10)

$router->add("name_der_route", "/my/url", MyController::class);

Routen mit Platzhaltern

Oftmals sind Routen dynamisch. Deshalb können die Routen auch mit Platzhaltern versehen werden. Ein Platzhalter verwendet folgende Schreibweise: {name_des_platzhalters}. Alle Parameter entsprechen den jeweiligen Platzhaltern. (Die Reihenfolge der Parameter ist zwingend einzuhalten!), (*11)

<?php
$router->add("name_der_route", "/my/url/{name}", function($name){
    echo "Hello $name!";
});

Außerdem können die Platzhalter mithilfe von regulären Ausdrücken eingeschränkt werden., (*12)

<?php
$router->add("name_der_route", "/my/url/{name}", function($name){
    echo "Hello $name!";
}, array(
    "pattern" => array(
        "name" => "([A-Za-z]+)"
    );
));

Routen einschränken

Die Routen können mehrfach eingeschränkt werden:, (*13)

  • auf bestimmte Domains
  • nur für HTTPS-Verbindungen
  • auf bestimmte Verbs (Request-Methoden) ... GET, POST, DELETE, PUT

Um eine Einschränkung festlegen zu können wird beim Hinzufügen einer Route ein weiterer Parameter angegeben. Dieser ist ein Array und beinhaltet alle gewünschten Einschränkungen., (*14)

<?php
$router->add("name_der_route", "/my/url", function(){
    echo "Hello World!";
}, array(
    "https" => true,
    "verb" => ["POST", "GET"],
    "domain" => ["example.com", "example.at"]
));

Routing starten

Wenn der Router angelegt ist und alle Routen registriert sind, dann kann mit dem Routing-Prozess begonnen werden. Dies funktioniert vollkommen automatisch - es muss lediglich die Funktion, die das Routen übernimmt, aufgerufen werden., (*15)

<?php
$router->route();

Routen abfragen

Die Methode getRoutes() liefert alle registrieren Routen zurück. Mithilfe der Funktion hasRoutes() kann überprüft werden, ob bereits Routen registriert wurden, oder nicht., (*16)

<?php
if($router->hasRoutes()){
    // Es sind bereits Routen registriert
} else {
    // Es sind noch keine Routen registriert
}
<?php
$routes = $router->getRoutes(); // returns array

Seite nicht gefunden - Error 404

Wird keine entsprechende Route gefunden, wird eine Error404Exception geworfen., (*17)

<?php
try {
    $router->route();
} catch(Error404Exception $e) {
    echo "Error 404 - Die Seite wurde nicht gefunden!";
}

Damit sich die URLs jederzeit ändern können und auch von unterschiedlichen Verzeichnissen aus aufgerufen werden können, werden die Verlinkungen mit Hilfe der route Funktion erzeugt., (*18)

Ein Link kann wie folgt generiert werden:, (*19)

<?php
$url = route("testRoute");

Übergeben wird der Name der Route. Des Weiteren können bei Routen mit Platzhaltern die Links auch entsprechend erzeugt werden, indem einfach die Parameter als Array übergeben werden., (*20)

Angenommen es gibt eine Route /users/{username}:, (*21)

<?php
$url = route("users", array("username" => "admin"));

Assets

Das Link-System funktioniert auch für "Dateien", die nicht im Router registriert sind. Gibt es beispielsweise eine CSS-Datei, welche auf einer bestimmten Seite angezeigt werden soll, kann für diese ebenfalls ein absoluter Pfad generiert werden., (*22)

<?php
$url = asset("css/style.css");

Umleitungen

Oftmals ist es notwendig auf eine andere Seite weiterzuleiten. Dies erfolgt über die redirect-Funktion. Diese funktioniert im Prinzip genau gleich, wie die routelink-Methode, mit dem einzigen Unterschied, dass kein Link zurückgeliefert wird, sondern direkt auf diese Seite weitergeleitet wird., (*23)

<?php
redirect("home");

Automatisches Routing

Die Route wird wie folgt definiert: /my/url/[auto]. Somit werden alle Informationen die nach /my/url/ folgen als Parameter übergeben., (*24)

The Versions

30/07 2016

dev-master

9999999-dev

PHP-Routing-System zur Verknüpfung von URLs mit Funktionen - Ideal für APIs (Web-Services) bzw. schöne (benutzerdefinierte) URLs.

  Sources   Download

MIT

The Requires

 

route routing urls redirect

30/07 2016

v1.0.0

1.0.0.0

PHP-Routing-System zur Verknüpfung von URLs mit Funktionen - Ideal für APIs (Web-Services) bzw. schöne (benutzerdefinierte) URLs.

  Sources   Download

MIT

The Requires

 

route routing urls redirect