Macaw adalah router PHP open source yang sederhana. Ini sangat kecil (~150 LOC), cepat, dan memiliki beberapa kode sumber beranotasi yang bagus. Kelas ini memungkinkan Anda untuk memasukkannya ke dalam proyek Anda dan segera mulai menggunakannya.
Jika Anda memiliki Komposer, cukup sertakan Macaw sebagai ketergantungan proyek di composer.json
Anda. Jika Anda tidak menginstalnya cukup dengan mengunduh file .ZIP dan mengekstraknya ke direktori proyek Anda.
require: {
"noahbuscher/macaw": "dev-master"
}
Pertama, use
namespace Macaw:
use NoahBuscher Macaw Macaw ;
Macaw bukan sebuah objek, jadi Anda bisa langsung melakukan operasi ke kelasnya. Inilah Halo Dunia:
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
Macaw juga mendukung URI lambda, seperti:
Macaw:: get ( ' /(:any) ' , function ( $ slug ) {
echo ' The slug is: ' . $ slug ;
});
Macaw:: dispatch ();
Anda juga dapat membuat permintaan metode HTTP di Macaw, sehingga Anda juga dapat melakukan:
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();
Terakhir, jika tidak ada rute yang ditentukan untuk lokasi tertentu, Anda dapat membuat Macaw menjalankan panggilan balik khusus, seperti:
Macaw:: error ( function () {
echo ' 404 :: Not Found ' ;
});
Jika Anda tidak menentukan panggilan balik kesalahan, Macaw hanya akan echo 404
.
Untuk memberi tahu server bahwa URI tidak menunjuk ke file sebenarnya, Anda mungkin perlu menggunakan salah satu contoh file konfigurasi.
Untuk demo ini katakanlah saya memiliki folder bernama controllers dengan demo.php
indeks.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 ;
}
}
Ini dengan Macaw yang diinstal melalui komposer.
komposer.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;
}