macaw
1.0.0
Macaw は、シンプルなオープンソースの PHP ルーターです。これは非常に小さく (~150 LOC)、高速で、優れた注釈付きのソース コードが含まれています。このクラスを使用すると、プロジェクトに放り込むだけですぐに使い始めることができます。
Composer をお持ちの場合は、 composer.json
にプロジェクトの依存関係として Macaw を含めるだけです。 .ZIP ファイルをダウンロードしてプロジェクト ディレクトリに解凍するだけでインストールしない場合。
require: {
"noahbuscher/macaw": "dev-master"
}
まず、Macaw 名前空間use
。
use NoahBuscher Macaw Macaw ;
Macaw はオブジェクトではないため、クラスに対して直接操作を行うことができます。 Hello World は次のとおりです。
Macaw:: get ( ' / ' , function () {
echo ' Hello world! ' ;
});
Macaw:: dispatch ();
Macaw は次のようなラムダ 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 が実際のファイルを指していないことをサーバーに知らせるために、サンプル構成ファイルのいずれかを使用する必要がある場合があります。
このデモでは、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(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;
}