イベント駆動型PHPフレームワークを作る その11

SimEntryのDispatchを見てみましょう。

public function dispatch() {
  $controller = simg_create_instance(SIMG_PATH_CONTROLLER, SIMG_CLASS_USER_CONTROLLER);
  $output = simg_create_instance(SIMG_PATH_MODEL, SIMG_CLASS_USER_OUTPUT);
  $parameter = simg_create_instance(SIMG_PATH_MODEL, SIMG_CLASS_USER_PARAMETER);
  $db = simg_create_instance(SIMG_PATH_MODEL, SIMG_CLASS_USER_DB);
  $controller->run($output, $parameter, $db);
}

ControllerのrunをコールするためにOutput、Parameter、Dbを生成しています。
simg_create_instanceはインスタンスを生成するSimg共通関数です。
生成するクラス名はSimg側で下記の通り宣言されている定数を使います。

SIMG_CLASS_USER_CONTROLLER=Controller
SIMG_CLASS_USER_DB=Db
SIMG_CLASS_USER_OUTPUT=Output
SIMG_CLASS_USER_PARAMETER=Parameter

どうやらapplicationディレクトリ配下の規定のパス上のクラスを生成しているようですね。

require_once('SimgController.php');
class Controller extends SimgController {
  public function getDefaultEvent() {
    return EVENT_INDEX;
  }
}

ほとんどの処理はSimg本体であるSimgControllerで実装されているようです。
ここで定義されているのはデフォルトEventです。
これはURLでEventパラメータが指定されなかった時に使われるデフォルト値であることは自明ですね。
ついでにOutput、Parameterは以下の通りです。

require_once('SimgOutput.php');
class Output extends SimgOutput {
  public function getHomeTemplate() {
    return TEMPLATE_HELLO;
  }
  public function getSystemErrorTemplate() {
    return TEMPLATE_ERROR;
  }
}
require_once('SimgParameter.php');
class Parameter extends SimgParameter {
}

Parameterは空っぽですね。
OutputのgetHomeTemplateはデフォルトページのようです。
getSystemErrorTemplateはエラー発生時のページの定義ですね。
Simg版「Hello,world」はDBを使っていませんので、Dbインスタンスは作られません。
Controllerはこれらのインスタンスを使ってrunするのですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です