URI ルーティング
Ziu にはURI ルーティングの機能が存在します。
URI ルーティング機能により、アクセスしたURLに対してURI部分を解析してアプリケーションフォルダ名の配下に対応する モジュール の処理を実行することができます。Ziu において モジュール とは、Logic-Prep-View のかたまりを指し、一般的なMVCフレームワークでの コントローラ から ビュー までの処理を意味します。
URI 解析パターン
本項では、コントローラ(Ziu でいうロジッククラス)を対象に解析パターンについて説明していきます。
URI が /item/list/purchaced/10/25 の場合、以下の順で解析されていきます。
優先順 | item | list | purchaced | 10 | 25 |
---|---|---|---|---|---|
1 | コントローラ名 | メソッド名 | 第1引数 | 第2引数 | 第3引数 |
2 | フォルダ名 | コントローラ名 | メソッド名 | 第1引数 | 第2引数 |
上階層より順にコントローラへマッピングが行われます。
該当するコントローラが見つからなかった場合は、404エラー処理が行われます。
解析例
ホストのトップとしてURI「/」にアクセス
優先順 | コントローラ | メソッド | ファイル | 実行処理 |
---|---|---|---|---|
1 | index | index | index.logic.php | Index::index() |
(注意) _conf/routes.php
において _def_
が未指定の場合の動作です。
通常は、'_def_' => 'welcome'
となっているので、コントローラは「Welcome」になります。
URI「/item」にアクセス
優先順 | コントローラ | メソッド | ファイル | 実行処理 |
---|---|---|---|---|
1 | item | index | item.logic.php | Item::index() |
2 | item/index | index | item/index.logic.php | Item_Index::index() |
URI「/news/list」にアクセス
優先順 | コントローラ | メソッド | ファイル | 実行処理 |
---|---|---|---|---|
1 | news | list | news.logic.php | News::list() |
2 | news/list | index | news/list.logic.php | News_List::index() |
URI と Index 自動補完について
URIが /
で終わる場合、ルーティング機能でファイル名、又はメソッド名が index として自動補完されコントローラへマッピングを試みます。
補完例
補完前 URI | 補完後 URI | 実行ファイル | 実行メソッド |
---|---|---|---|
/ | /index | index.logic.php | Index::index() |
/news | /news/index | news.logic.php | News::index() |
/news | /news/index | news/index.logic.php | News_Index::index() |
URI ルーティングとモジュールの基本動作
既に述べたように Ziu では、URI に対してURI ルーティング機能によるマッピング処理によりモジュールが実行されます。
「URI によりモジュールが実行される」とは LPVワークフロー に沿った形で処理が進みます。
URI 解析パターンの項目では、コントローラ(Ziu でいうロジッククラス)を基準として説明をしました。
ここでモジュールの基本動作としてコントローラ(Logic)以外の Prep、View に関してもURI ルーティング機能のマッピング処理が適応されます。
モジュールのLPVワークフローの基本動作例
URI : /item/detail
ワークフロー | ファイル | 実行処理 |
---|---|---|
Logic | item.logic.php | Item::detail() |
Prep | item.prep.php | Item_Prep::detail() |
View | item.view.php | テンプレート読込み |
Prep
プレップクラスは、ロジッククラス同様のクラス定義となります。
よって、URI ルーティングでマッピングされるロジッククラスと同名のプレップクラスと、さらに同じメソッドが対象になります。
View
ビューテンプレートは、テンプレートとしての扱いになります。
つまり、URI ルーティングでマッピングされるロジッククラスと同名のビューテンプレートが対象になります。
クラス定義であるロジッククラス/プレップクラスのように、メソッドに相当する部分はビューテンプレートには影響を与えません。
404エラー
ページが存在しないURLへアクセスを行った場合はデフォルトで「404.view.php」を返します。
404で表示するViewファイルは、「ルーティング設定」にて変更することが出来ます。
_conf/routes.php
'_404_' => 'http_status/404',