Macaw es un enrutador PHP simple y de código abierto. Es súper pequeño (~150 LOC), rápido y tiene un excelente código fuente anotado. Esta clase le permite simplemente incluirlo en su proyecto y comenzar a usarlo inmediatamente.
Si tiene Composer, simplemente incluya Macaw como una dependencia del proyecto en su composer.json
. Si no, simplemente instálelo descargando el archivo .ZIP y extrayéndolo al directorio de su proyecto.
require: {
"noahbuscher/macaw": "dev-master"
}
Primero, use
el espacio de nombres Macaw:
use NoahBuscher Macaw Macaw ;
Macaw no es un objeto, por lo que puedes realizar operaciones directas a la clase. Aquí está el Hola Mundo:
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
Macaw también admite URI lambda, como:
Macaw:: get ( ' /(:any) ' , function ( $ slug ) {
echo ' The slug is: ' . $ slug ;
});
Macaw:: dispatch ();
También puedes realizar solicitudes de métodos HTTP en Macaw, por lo que también puedes hacer:
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();
Por último, si no hay una ruta definida para una ubicación determinada, puedes hacer que Macaw ejecute una devolución de llamada personalizada, como:
Macaw:: error ( function () {
echo ' 404 :: Not Found ' ;
});
Si no especifica una devolución de llamada de error, Macaw simplemente hará eco 404
.
Para que el servidor sepa que el URI no apunta a un archivo real, es posible que necesite utilizar uno de los archivos de configuración de ejemplo.
Para esta demostración digamos que tengo una carpeta llamada controladores con un demo.php
índice.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 ();
demostración.php:
<?php
namespace Controllers ;
class Demo {
public function index ()
{
echo ' home ' ;
}
public function page ()
{
echo ' page ' ;
}
public function view ( $ id )
{
echo $ id ;
}
}
Esto es con Macaw instalado a través del compositor.
compositor.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;
}