예제 #1
0
파일: Clover.php 프로젝트: sinri/Clover
 public static function startForWebRequest($root_path = null)
 {
     try {
         Clover::$current_task_uuid = uniqid();
         Clover::LogRequest();
         if ($root_path !== null) {
             Clover::setRootPath($root_path);
         }
         $controller_name = Clover::getController($sub_paths);
         if (empty($controller_name)) {
             $controller_name = Clover::$default_controller_name;
         }
         if (class_exists($controller_name)) {
             $controller = new $controller_name();
             if (!is_a($controller, 'CloverController')) {
                 throw new Exception($controller_name, -404);
             }
         } else {
             throw new Exception($controller_name, -404);
         }
         if (!empty($sub_paths)) {
             $func_name = $sub_paths[0];
             if (method_exists($controller, $func_name)) {
                 unset($sub_paths[0]);
                 call_user_func_array(array($controller, $func_name), array_values($sub_paths));
             } else {
                 throw new Exception($controller_name . "->" . $func_name, -404);
             }
         } else {
             $controller->index();
         }
     } catch (Exception $e) {
         if ($e->getCode() == -404) {
             //Page Not Found
             Clover::displayPageNotFound();
         } else {
             Clover::displayError($e);
         }
     }
 }