Beispiel #1
0
/**
 * 错误输出 
 * @param $error
 */
function halt($error)
{
    $e = array();
    if (DEBUG) {
        // 调试模式下输出错误信息
        if (!is_array($error)) {
            $trace = debug_backtrace();
            $e['message'] = $error;
            $e['file'] = $trace[0]['file'];
            $e['line'] = $trace[0]['line'];
        } else {
            $e = $error;
        }
    }
    EcError::show($e['message'], $e['type'], $e['file'], $e['line']);
    exit;
}
Beispiel #2
0
    if (!file_exists(ROOT_PATH . 'data/install.lock') && APP_NAME !== 'install') {
        header("Location: " . url('install/index/index'));
        exit;
    }
    /* 控制器和方法 */
    $controller = CONTROLLER_NAME . 'Controller';
    $action = ACTION_NAME;
    /* 控制器类是否存在 */
    if (!class_exists($controller)) {
        E(APP_NAME . '/' . $controller . '.class.php 控制器类不存在', 404);
    }
    $obj = new $controller();
    /* 是否非法操作 */
    if (!preg_match('/^[A-Za-z](\\w)*$/', $action)) {
        E(APP_NAME . '/' . $controller . '.class.php的' . $action . '() 方法不合法', 404);
    }
    /* 控制器类中的方法是否存在 */
    if (!method_exists($obj, $action)) {
        E(APP_NAME . '/' . $controller . '.class.php的' . $action . '() 方法不存在', 404);
    }
    /* 执行当前操作 */
    $method = new ReflectionMethod($obj, $action);
    if ($method->isPublic() && !$method->isStatic()) {
        $obj->{$action}();
    } else {
        /* 操作方法不是Public 抛出异常 */
        E(APP_NAME . '/' . $controller . '.class.php的' . $action . '() 方法没有访问权限', 404);
    }
} catch (Exception $e) {
    EcError::show($e->getMessage(), $e->getCode());
}
Beispiel #3
0
 public function run()
 {
     try {
         //网址解析
         if (function_exists('url_parse_ext')) {
             url_parse_ext();
             //自定义网址解析
         } else {
             $this->_parseUrl();
             //解析模块和操作
         }
         //模块或操作为空,则设置默认值
         self::$module = empty(self::$module) ? $this->appConfig['MODULE_DEFAULT'] : self::$module;
         self::$action = empty(self::$action) ? $this->appConfig['ACTION_DEFAULT'] : self::$action;
         //在其他页面通过$_GET['_module']和$_GET['_action']获取得到当前的模块和操作名
         $_GET['_module'] = self::$module;
         $_GET['_action'] = self::$action;
         //如果存在初始程序,则先加载初始程序
         if (file_exists($this->appConfig['MODULE_PATH'] . $this->appConfig['MODULE_INIT'])) {
             require $this->appConfig['MODULE_PATH'] . $this->appConfig['MODULE_INIT'];
         }
         $this->_define();
         //常量定义
         //检查指定模块是否存在
         if (preg_match("#^[a-z0-9_]+\$#i", self::$module) && $this->_checkModuleExists(self::$module)) {
             $module = self::$module;
         } else {
             if ($this->_checkModuleExists($this->appConfig['MODULE_EMPTY'])) {
                 //如果指定模块不存在,则检查是否存在空模块
                 $module = $this->appConfig['MODULE_EMPTY'];
             } else {
                 throw new Exception(self::$module . "模块不存在", 404);
                 //指定模块和空模块都不存在,则显示出错信息,并退出程序。
             }
         }
         //如果开启静态页面缓存,则尝试读取静态缓存
         if (false == $this->_readHtmlCache($module, self::$action)) {
             //静态缓存读取失败,执行模块操作
             $this->_execute($module);
         }
         //如果存在回调函数ec_app_end,则在即将结束前调用
         if (function_exists('ec_app_end')) {
             ec_app_end();
         }
     } catch (Exception $e) {
         EcError::show($e->getMessage(), $e->getCode());
     }
 }