前
の記事
Ethnaのソースコードを読み解く 第3回 Ethna_Controller::main
次の記事
Ethnaのソースコードを読み解く 第5回 Ethna_Controller::trigger
前回の続きより。
(オブジェクトが何かわからない人は、「データ」だと思ってください。オブジェクト=「関数付きデータ」です。)
$c->trigger()で、Sample_Controllerのtrigger関数(メソッド)が実行されます。
では、Sample_Controller.phpを開いて、trigger関数を探しましょう。
ない。
ということは、Ethna_Controllerのtrigger関数が( $cのメソッドとして )呼ばれるはずです。
Ethna_Controller::triggerは・・・あった。
私のようなへっぽこプログラマは、長い関数を見ると尻込みしてしまいます。
つづく
Ethna_Controller.php
function main('Sample_Controller', 'index', "")
{
$c =& new Sample_Controller;
$c->trigger('index', "");
}
$c には、Sample_Controllerクラスのオブジェクトが入ります。(オブジェクトが何かわからない人は、「データ」だと思ってください。オブジェクト=「関数付きデータ」です。)
$c->trigger()で、Sample_Controllerのtrigger関数(メソッド)が実行されます。
では、Sample_Controller.phpを開いて、trigger関数を探しましょう。
ない。
ということは、Ethna_Controllerのtrigger関数が( $cのメソッドとして )呼ばれるはずです。
Ethna_Controller::triggerは・・・あった。
function trigger($default_action_name = "", $fallback_action_name = "", $enable_filter = true)
{
// フィルターの生成
if ($enable_filter) {
$this->_createFilterChain();
}
// 実行前フィルタ
for ($i = 0; $i < count($this->filter_chain); $i++) {
$r = $this->filter_chain[$i]->preFilter();
if (Ethna::isError($r)) {
return $r;
}
}
// trigger
switch ($this->getGateway()) {
case GATEWAY_WWW:
$this->_trigger_WWW($default_action_name, $fallback_action_name);
break;
case GATEWAY_CLI:
$this->_trigger_CLI($default_action_name);
break;
case GATEWAY_XMLRPC:
$this->_trigger_XMLRPC();
break;
case GATEWAY_SOAP:
$this->_trigger_SOAP();
break;
}
// 実行後フィルタ
for ($i = count($this->filter_chain) - 1; $i >= 0; $i--) {
$r = $this->filter_chain[$i]->postFilter();
if (Ethna::isError($r)) {
return $r;
}
}
}
むむむ。。ちょっと長いですね。私のようなへっぽこプログラマは、長い関数を見ると尻込みしてしまいます。
つづく
カテゴリ
Ethna
トラックバック(1)
このブログ記事を参照しているブログ一覧: Ethnaのソースコードを読み解く 第4回 Sample_Controller::trigger
このブログ記事に対するトラックバックURL: http://dqn.sakusakutto.jp/mt/mt-tb.cgi/296
» Ethnaのソースコードを読み解く 第5回 Ethna_Controller::trigger(DQNEO起業日記)~のトラックバック
Ethna_Controller::trigger &n... 続きを読む
コメントする