| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
Yaf_Router クラス(Yaf >=1.0.0) はじめにYaf_Router は、フレームワークの標準のルーターです。 ルーティングとは、URI エンドポイント (URI の中で、ベース URL の後に続く部分。 Yaf_Request_Abstract::setBaseUri() を参照ください) を受け取ってそこからパラメータを抽出し、 リクエストを受け取るモジュールやコントローラそしてアクションを判断する処理のことです。 モジュール、コントローラ、アクション、そしてその他のパラメータは Yaf_Request_Abstract オブジェクトにまとめられ、 そして Yaf_Dispatcher で処理します。 ルーティングが行われるのは一度だけで、リクエストを最初に受け取ってから 最初のコントローラにディスパッチする前に行われます。 Yaf_Router は、mod_rewrite 風の機能を PHP を使って実現できるような設計になっています。 Ruby on Rails のルーティング方式を参考にしており、 ウェブサーバーの URL リライト機能に関する事前知識は不要です。 Apache の場合は、次のような mod_rewrite ルールを書けば使えます。 例1 Apache 用のリライトルール RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php 例2 Apache 用のリライトルール RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] 例3 Lighttpd 用のリライトルール url.rewrite-once = ( ".*\?(.*)$" => "/index.php?$1", ".*\.(js|ico|gif|jpg|png|css|html)$" => "$0", "" => "/index.php" ) 例4 Nginx 用のリライトルール server { listen ****; server_name yourdomain.com; root document_root; index index.php index.html; if (!-e $request_filename) { rewrite ^/(.*) /index.php/$1 last; } } デフォルトのルートYaf_Router には設定済みのデフォルトルート Yaf_Route_Static が用意されており、これは controller/action 形式の URI にマッチします。 さらに、モジュール名を最初のパス要素として指定できます。この場合の URI は module/controller/action 形式になります。 また、追加のパラメータを URI に追記できるようになっています。つまり controller/action/var1/value1/var2/value2 といった形式です。
ルートのマッチングの例を示します。 例5 Yaf_Route_Static のデフォルトルート // このように設定しているものとします $conf = array( "application" => array( "modules" => "Index,Blog", ), ); コントローラのみ http://example/news controller == news アクションのみ (php.ini で yaf.action_prefer=1 とした場合) action == news モジュール名として無効な場合はコントローラ名とみなします http://example/foo controller == foo モジュール + コントローラ http://example/blog/archive module == blog controller == archive モジュール + コントローラ + アクション http://example/blog/archive/list module == blog controller == archive action == list モジュール + コントローラ + アクション + パラメータ http://example/blog/archive/list/sort/alpha/date/desc module == blog controller == archive action == list sort == alpha date == desc プロパティ
目次
|
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「Yaf_Router クラス」をGoogle検索
|