Mapleの流れ

前に眠くて脱落したところから続きを読む。
Controllerでのwhileループの動き。


ConfigUtils

  1. DIContainerからActionChainコンポーネントを取り出す
  2. アクション名から設定ファイルを取り出して設定
  3. アクションと同レベルのディレクトリならActionセクションがなくてもデフォルトのActionを設定


FilterChain

  1. ConfigUtilsを使って設定
    1. 設定されたsectionやActionフィルタをフィルタチェーンに追加
      1. 例えばActionセクションの追加なら、Filter_Action.class.php の Filter_Action クラスが追加される
  2. フィルタの実行
    1. 先程追加したフィルタを順に実行していく


Filter_Action

  1. DIContainerからActionChainコンポーネントを取り出す
  2. 現在のアクションを取り出す
  3. 設定ファイルから値を設定
  4. コンテナからRequestコンポーネントを取り出す
  5. Requestをアクションに移す
  6. エラーならばアクションを実行せずにエラービュー
  7. アクションチェーンの実行
  8. コンテナからResponseコンポーネントを取り出す
  9. アクションチェーンの戻り値があればテンプレートファイルをResponseに設定
  10. コンテナからフィルタチェーンを取り出す
  11. フィルタチェーンの実行

Controller

  1. フィルタチェーンのクリア
  2. ConfigUtilsのクリア
  3. 次のアクションへ


Filter_* クラスは Filter クラス(Filter.interface.phpで定義されているインターフェース用クラス)を継承している。


段々分かってきた。
依存関係がない分ソースがすごく追いづらい…。

現在のアクションの設定

フィルタチェーン => フィルタ => ...
フィルタチェーン <= フィルタ <= ...
フィルタチェーン => アクションフィルタ => アクションチェーン => アクション
          アクションフィルタ <= アクションチェーン <= アクション
          アクションフィルタ => フィルタチェーン => ...
フィルタチェーン <= アクションフィルタ <= フィルタチェーン <= ...

次のアクションへ

こんな感じ?違うかも。
文字だと分かりにくいな。。


なんだかアクションチェーンのループが2回あるような?気のせい??