Macaw est un routeur PHP simple et open source. Il est super petit (~ 150 LOC), rapide et possède un excellent code source annoté. Cette classe vous permet de simplement l'intégrer à votre projet et de commencer à l'utiliser immédiatement.
Si vous disposez de Composer, incluez simplement Macaw comme dépendance de projet dans votre composer.json
. Si vous ne l'installez pas simplement en téléchargeant le fichier .ZIP et en l'extrayant dans le répertoire de votre projet.
require: {
"noahbuscher/macaw": "dev-master"
}
Tout d’abord, use
l’espace de noms Macaw :
use NoahBuscher Macaw Macaw ;
Macaw n'est pas un objet, vous pouvez donc simplement effectuer des opérations directes sur la classe. Voici le Hello World :
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
Macaw prend également en charge les URI lambda, tels que :
Macaw:: get ( ' /(:any) ' , function ( $ slug ) {
echo ' The slug is: ' . $ slug ;
});
Macaw:: dispatch ();
Vous pouvez également faire des requêtes pour les méthodes HTTP dans Macaw, vous pouvez donc également faire :
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();
Enfin, si aucun itinéraire n'est défini pour un certain emplacement, vous pouvez demander à Macaw d'exécuter un rappel personnalisé, comme :
Macaw:: error ( function () {
echo ' 404 :: Not Found ' ;
});
Si vous ne spécifiez pas de rappel d'erreur, Macaw fera simplement écho à 404
.
Afin de faire savoir au serveur que l'URI ne pointe pas vers un fichier réel, vous devrez peut-être utiliser l'un des exemples de fichiers de configuration.
Pour cette démo, disons que j'ai un dossier appelé contrôleurs avec un fichier 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 ();
démo.php :
<?php
namespace Controllers ;
class Demo {
public function index ()
{
echo ' home ' ;
}
public function page ()
{
echo ' page ' ;
}
public function view ( $ id )
{
echo $ id ;
}
}
C'est avec Macaw installé via composer.
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;
}