Skip to content

ルーティングを定義する

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メソッドを|で連結したものだ。文法上は、あらゆる文字列を許容する。

デフォルトではGETPOSTメソッドしか受け入れない。なので、 \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']);

現在のところ、同じ実行時に複数のメソッド制約をすることは想定しない。(実行ごとに制約を変更することは可能)

Clone this wiki locally