Mapleの流れ
前に眠くて脱落したところから続きを読む。
Controllerでのwhileループの動き。
ConfigUtils
- DIContainerからActionChainコンポーネントを取り出す
- アクション名から設定ファイルを取り出して設定
- アクションと同レベルのディレクトリならActionセクションがなくてもデフォルトのActionを設定
FilterChain
- ConfigUtilsを使って設定
- 設定されたsectionやActionフィルタをフィルタチェーンに追加
- 例えばActionセクションの追加なら、Filter_Action.class.php の Filter_Action クラスが追加される
- 設定されたsectionやActionフィルタをフィルタチェーンに追加
- フィルタの実行
- 先程追加したフィルタを順に実行していく
Filter_Action
- DIContainerからActionChainコンポーネントを取り出す
- 現在のアクションを取り出す
- 設定ファイルから値を設定
- コンテナからRequestコンポーネントを取り出す
- Requestをアクションに移す
- エラーならばアクションを実行せずにエラービュー
- アクションチェーンの実行
- コンテナからResponseコンポーネントを取り出す
- アクションチェーンの戻り値があればテンプレートファイルをResponseに設定
- コンテナからフィルタチェーンを取り出す
- フィルタチェーンの実行
Controller
- フィルタチェーンのクリア
- ConfigUtilsのクリア
- 次のアクションへ
Filter_* クラスは Filter クラス(Filter.interface.phpで定義されているインターフェース用クラス)を継承している。
段々分かってきた。
依存関係がない分ソースがすごく追いづらい…。
現在のアクションの設定 フィルタチェーン => フィルタ => ... フィルタチェーン <= フィルタ <= ... フィルタチェーン => アクションフィルタ => アクションチェーン => アクション アクションフィルタ <= アクションチェーン <= アクション アクションフィルタ => フィルタチェーン => ... フィルタチェーン <= アクションフィルタ <= フィルタチェーン <= ... 次のアクションへ
こんな感じ?違うかも。
文字だと分かりにくいな。。
なんだかアクションチェーンのループが2回あるような?気のせい??