/**
  * @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!");
         }
     }
 }
Exemplo n.º 2
0
 /**
  * @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!");
         }
     }
 }