Macaw ist ein einfacher Open-Source-PHP-Router. Es ist superklein (~150 LOC), schnell und verfügt über großartigen kommentierten Quellcode. Mit dieser Klasse können Sie es einfach in Ihr Projekt einfügen und sofort mit der Verwendung beginnen.
Wenn Sie Composer haben, fügen Sie Macaw einfach als Projektabhängigkeit in Ihre composer.json
ein. Wenn Sie es nicht installieren, laden Sie einfach die ZIP-Datei herunter und extrahieren sie in Ihr Projektverzeichnis.
require: {
"noahbuscher/macaw": "dev-master"
}
use
zunächst den Macaw-Namespace:
use NoahBuscher Macaw Macaw ;
Macaw ist kein Objekt, daher können Sie einfach direkte Operationen an der Klasse durchführen. Hier ist die Hallo Welt:
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
Macaw unterstützt auch Lambda-URIs, wie zum Beispiel:
Macaw:: get ( ' /(:any) ' , function ( $ slug ) {
echo ' The slug is: ' . $ slug ;
});
Macaw:: dispatch ();
Sie können in Macaw auch Anfragen für HTTP-Methoden stellen, also könnten Sie auch Folgendes tun:
Macaw::get( ' / ' , function () {
echo ' I ' m a GET request! ' ;
});
Macaw::post( ' / ' , function() {
echo ' I'm a POST request! ' ;
});
Macaw::any( ' / ' , function() {
echo ' I can be both a GET and a POST request!';
});
Macaw::dispatch();
Wenn für einen bestimmten Standort keine Route definiert ist, können Sie Macaw schließlich dazu veranlassen, einen benutzerdefinierten Rückruf auszuführen, z. B.:
Macaw:: error ( function () {
echo ' 404 :: Not Found ' ;
});
Wenn Sie keinen Fehlerrückruf angeben, gibt Macaw nur 404
aus.
Um dem Server mitzuteilen, dass der URI nicht auf eine echte Datei verweist, müssen Sie möglicherweise eine der Beispielkonfigurationsdateien verwenden.
Nehmen wir für diese Demo an, ich habe einen Ordner namens „controllers“ mit einer demo.php
index.php:
require ( ' vendor/autoload.php ' );
use NoahBuscher Macaw Macaw ;
Macaw:: get ( ' / ' , ' Controllersdemo@index ' );
Macaw:: get ( ' page ' , ' Controllersdemo@page ' );
Macaw:: get ( ' view/(:num) ' , ' Controllersdemo@view ' );
Macaw:: dispatch ();
demo.php:
<?php
namespace Controllers ;
class Demo {
public function index ()
{
echo ' home ' ;
}
public function page ()
{
echo ' page ' ;
}
public function view ( $ id )
{
echo $ id ;
}
}
Dies geschieht, wenn Macaw über Composer installiert wird.
Composer.json:
{
"require": {
"noahbuscher/macaw": "dev-master"
},
"autoload": {
"psr-4": {
"" : ""
}
}
}
.htaccess(Apache):
RewriteEngine On
RewriteBase /
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?$1 [QSA,L]
.htaccess(Nginx):
rewrite ^/(.*)/$ /$1 redirect;
if (!-e $request_filename){
rewrite ^(.*)$ /index.php break;
}