-
Notifications
You must be signed in to change notification settings - Fork 2
ルーティングを定義する
USAMI Kenta edited this page Mar 9, 2015
·
1 revision
ルーティングは配列の配列として表現する。
// メソッド パス(path) 返り値 Param => 正規表現 拡張子(フォーマット)
$routing_map = [
['GET', '/', 'index' ],
['GET|POST', '/search', 'search' ],
['GET', '/article/:id', 'article', ['id' => '/(\d+)/'], '?ext' => ['', 'txt']],
['GET', '/info', 'feed' , '?ext' => ['rss', 'rdf', 'xml']],
'#404' => 'not_found' // special
];
$router = new \Teto\Routing\Router($routing_map);
$action = $router->match($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);
ルーティングに含まれる各要素も配列であり、これは見ためを簡素にする意図がある。
メソッド文字列で表現する。受け入れる値は、許容するHTTPメソッドを|
で連結したものだ。文法上は、あらゆる文字列を許容する。
デフォルトではGET
とPOST
メソッドしか受け入れない。なので、 \Teto\Routing\Router::setHTTPMethod()
で許容するメソッドの種類を変更する必要がある。
\Teto\Routing\Router::setHTTPMethod(['GET', 'POST', 'PUT', 'DELETE']);
$router = new \Teto\Routing\Router($routing_map);
$action = $router->match($_SERVER['REQUEST_METHOD'], $_SERVER['REQUEST_URI']);
現在のところ、同じ実行時に複数のメソッド制約をすることは想定しない。(実行ごとに制約を変更することは可能)