Example #1
0
 private function dispatch()
 {
     if ($this->arguments["command"] == "") {
         $this->error("can't call empty command");
     }
     $fileName = "{$this->arguments['script']}_{$this->arguments['command']}";
     $className = Inflector::camelize($fileName);
     if ($command =& ClassRegistry::load($className, "Command")) {
         if (can_call_method($command, "execute")) {
             call_user_func_array(array($command, "execute"), $this->arguments["params"]);
         } else {
             $this->error("can't execute command {$className}");
         }
     } else {
         $this->error("command {$className} not found");
     }
 }
Example #2
0
 /**
  *  Chama o controller e a action solicitadas pela URL.
  * 
  *  @return mixed Instância do novo controller ou falso em caso de erro
  */
 public function dispatch()
 {
     $path = Mapper::parse();
     $path["controller"] = Inflector::hyphenToUnderscore($path["controller"]);
     $path["action"] = Inflector::hyphenToUnderscore($path["action"]);
     $controller_name = Inflector::camelize($path["controller"]) . "Controller";
     if ($controller =& ClassRegistry::load($controller_name, "Controller")) {
         if (!can_call_method($controller, $path['action']) && !App::path("View", "{$path['controller']}/{$path['action']}.{$path['extension']}")) {
             $this->error("missingAction", array("controller" => $path["controller"], "action" => $path["action"]));
             return false;
         }
     } else {
         if (App::path("View", "{$path['controller']}/{$path['action']}.{$path['extension']}")) {
             $controller =& ClassRegistry::load("AppController", "Controller");
         } else {
             $this->error("missingController", array("controller" => $path["controller"]));
             return false;
         }
     }
     $controller->params = $path;
     $controller->componentEvent("initialize");
     $controller->beforeFilter();
     $controller->componentEvent("startup");
     if (in_array($path["action"], $controller->methods) && can_call_method($controller, $path["action"])) {
         $params = $path["params"];
         if (!is_null($path["id"])) {
             $params = array_merge(array($path["id"]), $params);
         }
         call_user_func_array(array(&$controller, $path["action"]), $params);
     }
     if ($controller->autoRender) {
         $controller->render();
     }
     $controller->componentEvent("shutdown");
     echo $controller->output;
     $controller->afterFilter();
     return $controller;
 }
Example #3
0
 /**
  *  Executa um evento em todos os componentes do controller.
  *
  *  @param string $event Evento a ser executado
  *  @return void
  */
 public function componentEvent($event = null)
 {
     foreach ($this->components as $component) {
         $className = "{$component}Component";
         if (can_call_method($this->{$className}, $event)) {
             $this->{$className}->{$event}($this);
         } else {
             trigger_error("Can't call method {$event} in {$className}", E_USER_WARNING);
         }
     }
 }