Ethnaのソースコードを読み解く 第7回 Ethna_Controller::_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はこのくらいにして、次回以降、個別のクラスの中をのぞいて見ましょう。
カテゴリ:
Ethna