処理のフロー(設計メモ)

  • /foo.htmlにアクセスがあった場合、mod_rewriteによって/dispatcher.php?/fooにリクエスト内容が書き換えられる。
  • dispatcher.phpはMoony_Config.phpをincludeして、動作に必要な設定を行う。
  • dispatcher.phpはMoony_ErrorHandlerのインスタンスを生成、registerメソッドを呼び出して、エラーハンドラの設定を行う。
    • エラーが発生した場合、Moony_Loggerを用いてロギング処理が行われる。その後、httpのステータスで500(Internal Server Error)を返す。
  • dispatcher.phpはMoony_Controllerのインスタンスを生成、クエリーストリング(/foo)を受け渡す。
  • Moony_Controllerは渡されたクエリーストリングを解析、アクション名称を決定する。
    • /fooの場合、アクション名称はFoo
    • /foo/barの場合、アクション名称はFooBar
  • Moony_ControllerはMoony_Requestのインスタンスを生成、リクエストパラメータを格納する。
  • Moony_ControllerはMoony_Sessionのインスタンスを生成、セッションを開始する。
  • Moony_ControllerはMoony_Viewのインスタンスを生成、アクション名称を受け渡す。
  • Moony_Controllerはアクション名称に従ってアクションクラスのインスタンス生成を試みる。アクションクラスはMoony_Actionのサブクラス。
    • アクション名称がFooの場合、FooAction.phpというファイルをincludeして、インスタンスを生成しようとする。
  • アクションクラスのファイルが存在しない場合、Moony_Viewのforwardメソッドを引数なしで呼び出して処理を終了する。
    • 無条件にFoo.tplという名称のテンプレートファイルを表示する。
    • テンプレートファイルが存在しない場合は、httpのステータスで404(Not Found)を返す。
  • アクションクラスのインスタンス生成に成功した場合、アクションクラスのexecuteメソッドを呼び出す。引数として、先ほど生成したMoony_Request、Moony_Session、Moony_Viewのインスタンスをそれぞれ受け渡す。また、クエリーストリングで渡されたパラメータをアクションクラスのメンバー変数、$_paramsにセットする。
  • アクションクラス、またはそこから呼び出されたモジュール内でビジネスロジックの処理を行う。
  • Moony_Viewのassignメソッドを用いて、テンプレートに必要な値をそれぞれ設定する。
  • Moony_Viewのforwardメソッドを呼び出して、処理を終了する。
    • 引数なしの場合、無条件にFoo.tplという名称のテンプレートファイルを表示する。
    • 引数に例えば'bar'を指定した場合、FooBar.tplという名称のテンプレートファイルを表示する。
    • テンプレートファイルが存在しない場合は、httpのステータスで404(Not Found)を返す。