www.gusucode.com > Ectouch手机端网购商城系统PHP版源码程序 > ectouch/include/EcTouch.php
<?php /** * ECTouch Open Source Project * ============================================================================ * Copyright (c) 2012-2014 http://ectouch.cn All rights reserved. * ---------------------------------------------------------------------------- * 文件名称:EcTouch.php * ---------------------------------------------------------------------------- * 功能描述:ECTouch公共入口文件 * ---------------------------------------------------------------------------- * Licensed ( http://www.ectouch.cn/docs/license.txt ) * ---------------------------------------------------------------------------- */ /* 访问控制 */ defined('IN_ECTOUCH') or die('Deny Access'); if (version_compare(PHP_VERSION, '5.2.0', '<')) die('require PHP > 5.2.0 !'); defined('BASE_PATH') or define('BASE_PATH', dirname(__FILE__) . '/'); defined('ROOT_PATH') or define('ROOT_PATH', realpath(dirname(__FILE__) . '/../') . '/'); defined('APP_PATH') or define('APP_PATH', BASE_PATH . 'apps/'); defined('ADDONS_PATH') or define('ADDONS_PATH', ROOT_PATH . 'plugins/'); defined('DEFAULT_APP') or define('DEFAULT_APP', 'default'); defined('DEFAULT_CONTROLLER') or define('DEFAULT_CONTROLLER', 'Index'); defined('DEFAULT_ACTION') or define('DEFAULT_ACTION', 'index'); if(!defined('DEBUG_MODE')) define('DEBUG_MODE',0); /* 系统函数 */ require(BASE_PATH . 'Common.php'); /* 默认配置 */ C(load_file(BASE_PATH . 'Convention.php')); /* 数据库配置 */ C('DB', load_file(ROOT_PATH . 'data/config.php')); /* 设置时区 */ date_default_timezone_set(C('DEFAULT_TIMEZONE')); /* 调试配置 */ defined('DEBUG') or define('DEBUG', C('DEBUG')); /* 版本信息 */ load_file(ROOT_PATH . 'data/version.php'); /* 错误和异常处理 */ register_shutdown_function('fatalError'); /* 错误等级 */ if (DEBUG) { @ini_set("display_errors", 1); error_reporting(E_ALL ^ E_NOTICE); // 除了notice提示,其他类型的错误都报告 debug(); // system 运行时间,占用内存开始计算 } else { @ini_set("display_errors", 0); error_reporting(0); // 把错误报告,全部屏蔽 } /* 自动注册类文件 */ spl_autoload_register('autoload'); /* 网址路由解析 */ urlRoute(); try { /* 常规URL */ defined('__HOST__') or define('__HOST__', get_domain()); defined('__ROOT__') or define('__ROOT__', rtrim(dirname($_SERVER["SCRIPT_NAME"]), '\\/')); defined('__URL__') or define('__URL__', __HOST__ . __ROOT__); defined('__ADDONS__') or define('__ADDONS__', __ROOT__ . '/plugins'); defined('__PUBLIC__') or define('__PUBLIC__', __ROOT__ . '/data/common'); defined('__ASSETS__') or define('__ASSETS__', __ROOT__ . '/data/assets/' . APP_NAME); /* 安装检测 */ 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()); }