macaw
1.0.0
Macaw 是一個簡單的開源 PHP 路由器。它非常小(~150 LOC)、速度快,並且有一些很棒的帶註釋的源代碼。這個類別允許您將其放入您的專案中並立即開始使用它。
如果您有 Composer,只需將 Macaw 作為專案依賴項包含在您的composer.json
中。如果您不只是透過下載 .ZIP 檔案並將其解壓縮到專案目錄來安裝它。
require: {
"noahbuscher/macaw": "dev-master"
}
首先, use
Macaw 命名空間:
use NoahBuscher Macaw Macaw ;
Macaw 不是一個對象,因此您可以直接對類別進行操作。這是你好世界:
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
Macaw 也支援 lambda URI,例如:
Macaw:: get ( ' /(:any) ' , function ( $ slug ) {
echo ' The slug is: ' . $ slug ;
});
Macaw:: dispatch ();
您也可以在 Macaw 中發出 HTTP 方法的請求,因此您也可以這樣做:
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();
最後,如果沒有為某個位置定義路線,您可以讓 Macaw 運行自訂回調,例如:
Macaw:: error ( function () {
echo ' 404 :: Not Found ' ;
});
如果您不指定錯誤回調,Macaw 將只回顯404
。
為了讓伺服器知道 URI 不指向真實文件,您可能需要使用範例設定檔之一。
對於這個演示,假設我有一個名為“controllers”的資料夾,其中包含一個 demo.php
索引.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 ();
示範.php:
<?php
namespace Controllers ;
class Demo {
public function index ()
{
echo ' home ' ;
}
public function page ()
{
echo ' page ' ;
}
public function view ( $ id )
{
echo $ id ;
}
}
這是透過 Composer 安裝的 Macaw。
作曲家.json:
{
"require": {
"noahbuscher/macaw": "dev-master"
},
"autoload": {
"psr-4": {
"" : ""
}
}
}
.htaccess(阿帕契):
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;
}