/** * @see \herosphp\core\interfaces\IApplication::actionInvoke() */ public function actionInvoke() { //调用生命周期监听器 if (!empty($this->listeners)) { foreach ($this->listeners as $listener) { $listener->beforeActionInvoke(); } } //加载控制器Action文件 $module = $this->httpRequest->getModule(); $action = $this->httpRequest->getAction(); $method = $this->httpRequest->getMethod(); $actionDir = APP_PATH . "modules/{$module}/action/"; $actionFile = ucfirst($action) . 'Action.class.php'; $filename = $actionDir . $actionFile; if (!file_exists($filename)) { E("Action file {$filename} not found. "); } else { require_once $filename; $className = "\\{$module}\\action\\" . ucfirst($action) . "Action"; $this->actionInstance = new $className(); //调用初始化方法 if (method_exists($this->actionInstance, 'C_start')) { $this->actionInstance->C_start(); } //根据动作去找对应的方法 if (method_exists($this->actionInstance, $method)) { $this->actionInstance->{$method}($this->httpRequest); } else { E("Method {$className}::{$method} not found!"); } } }
/** * @see \herosphp\core\interfaces\IApplication::actionInvoke() */ public function actionInvoke() { //调用生命周期监听器 if (!empty($this->listeners)) { foreach ($this->listeners as $lisener) { $lisener->beforeActionInvoke(); } } //加载控制器Action文件 $module = $this->httpRequest->getModule(); $action = $this->httpRequest->getAction(); $method = $this->httpRequest->getMethod(); $actionDir = APP_PATH . "modules/{$module}/action/"; $actionFile = ucfirst($action) . 'Action.class.php'; $filename = $actionDir . $actionFile; if (!file_exists($filename)) { if (APP_DEBUG) { E("Action file {$filename} not found. "); } } echo "\n-----------"; echo " class: " . __CLASS__ . " method: " . __METHOD__ . "\n"; echo " file:" . __FILE__ . "\n"; print_r(array("module" => $module, "action" => $action, "method" => $method)); print_r(array("filename" => $filename)); echo "-----------\n"; include $filename; $className = "\\{$module}\\action\\" . ucfirst($action) . "Action"; $this->actionInstance = new $className(); //调用初始化方法 if (method_exists($this->actionInstance, 'C_start')) { $this->actionInstance->C_start(); } //根据动作去找对应的方法 if (method_exists($this->actionInstance, $method)) { $this->actionInstance->{$method}($this->httpRequest); } else { if (APP_DEBUG) { E("Method {$className}::{$method} not found!"); } } }