Ethnaのソースコードを読み解く 第7回 Ethna_Controller::_trigger_WWW 要約版

_trigger_WWWは長いので、ばっさり要約してみます。
Ethna_Controller::_trigger_WWW (要約版)

function _trigger_WWW($default_action_name = "", $fallback_action_name = "")
{
    // アクション名の取得
    $action_name = $this->_getActionName(
            $default_action_name, $fallback_action_name
    );

    // アクション定義の取得
    $action_obj =& $this->_getAction($action_name);

    $this->action_name = $action_name;

    $backend =& $this->getBackend();

    // アクションフォームを呼び出し
    $form_name = $this->getActionFormName($action_name);
    $this->action_form =& new $form_name($this);
    $this->action_form->setFormVars();

    $backend->setActionForm($this->action_form);

    // セッションスタート
    $session =& $this->getSession();
    $session->restore();

    // アクション実行
    $forward_name = $backend->perform($action_name);

    // ビュー呼び出し・実行
    if ($forward_name != null) {
        $view_class_name = $this->getViewClassName($forward_name);

        $this->view =& new $view_class_name(
            $backend, $forward_name, $this->_getForwardPath($forward_name)
        );

        $this->view->preforward();
        $this->view->forward();
    }

    return 0;
}
実際には使用されていないコードを切り捨て、本質的なところだけ残すとこのようになります。
すごいシンプルになりましたね。
これがEthnaの「背骨」にあたる部分です。

要約版とは言っても、このコードの状態で十分りっぱに機能します。
実際私が携わっている商用Webサイトでは、この状態でも完全に動きます。

さて、_trigger_WWW内で行われていることが、より明確に見えてきましたね。

  • アクションフォームの呼び出し(インスタンス化)、初期化
  • アクションクラスの呼び出し、実行
  • ビュークラスの呼び出し(インスタンス化)、実行
  • プログラム全体の終了

Ehtna_Controllerはこのくらいにして、次回以降、個別のクラスの中をのぞいて見ましょう。
カテゴリ: