forward先からforward元を知りたい場合
わざわざRequestに突っ込むのもアレなので、何とか方法はないかと思案中。
主にforward先からforward元のactionを取り出してメソッドを呼び出す為。
ExecutionChainの中身を見てもindexを外側から知る方法がない。
やっぱりdebug_backtraceで取り出すくらいしかないんだろうか。
debug_backtraceはphp-4.2.x以前で動かなくなるのでちょっと悩む。
-
-
- -
-
追記:2006/02/26
var $chain; function ExecutionChain () { $this->chain = array(); } function addRequest ($modName, $actName, &$action) { $this->chain[] = array('module_name' => $modName, 'action_name' => $actName, 'action' => &$action, 'microtime' => microtime()); } function & getAction ($index) { if (sizeof($this->chain) > $index && $index > -1) { return $this->chain[$index]['action']; } $null = NULL; return $null; } function getActionName ($index) { if (sizeof($this->chain) > $index && $index > -1) { return $this->chain[$index]['action_name']; } return NULL; } function getModuleName ($index) { if (sizeof($this->chain) > $index && $index > -1) { return $this->chain[$index]['module_name']; } return NULL; }
ExecutionChainから取り出す事で可能っぽいですね。
実際には
$execChain =& $controller->getExecutionChain(); $modName = $execChain->getModuleName($execChain->getSize() - 2); // 1個前のモジュール名
こんな感じでしょうか。