一言で言えば、コンポーネント(部品)を次々と実行するだけ。
格好良くコンポーネントと言ってますが、要するにクラスです。
◆コンポーネントの登録
たとえば、こんなコードです。
// Controllerを作成、 $ctrl = new \AmidaMVC\Framework\Controller(); // コンポーネントを追加。 $ctrl ->addComponent( 'Config', 'config' ) ->addComponent( 'Router', 'router' ) ->addComponent( 'Loader', 'loader' ) ->addComponent( 'Render', 'render' ) ; // フレームワーク実行 $data = new \AmidaMVC\Component\SiteObj(); $ctrl->start( $data );
最初にSiteObjとControllerのオブジェクトを作成してから、
コントローラーにコンポーネントを追加してゆきます。
これらのコンポーネントを順番に実行してゆきます。
クラスなので、実際に走らせるにはメソード名が必要です。
最初は「actionDefault」というメソードを呼び続けます。つまり正常に動いている場合の処理をこのメソード内に書きます。
上の例だと、
・Config:設定用クラス。必要そうな値を設定。
・Router:URLから読み込むファイルを決定する。
・Loader:見つけたファイルを読み込む。
・Render:テンプレートを呼び出してHTMLを出力する。
という処理を順番に行います。
◆アクション
実行するメソード名は、アクションと読んでいます。
実際はactionAction、最初に「action」をつけて呼び出します。
例えばactionHelloとかです。
もしアクションが存在しない場合。
デフォルトのアクション「Default」を呼び出します。
つまり「actionDefault」のメソードが呼ばれます。
◆エラー処理の例
途中でエラーが起きたとします。
たとえばRouterでファイルがみつからなかった場合について考えてみます。
- Routerでファイルがみつからない。
この場合、Routerはアクションを「_PageNotFound」に変えて、次のコンポーネントに処理を渡します。 - これ以降、「_PageNotFound」が呼び出されます。無ければデフォルトのアクションを実行します。
- さて、Loaderの「_PageNotFound」のアクションでは、設定で指定していたファイル(PageNotFound.md)を読み込みます。
この時点で、表示に必要なデータはそろったことになるので、正常系に戻します。つまり「actionDefault」を呼ぶようにコントローラーに命令します。 - Renderはファイルが読み込まれているので、正常系の処理と同じになります。
0 件のコメント:
コメントを投稿