示例#1
0
文件: index.php 项目: shizg/index
 /**
  * 执行
  */
 public static function run()
 {
     // 设定错误和异常处理
     set_error_handler('IndexPHP::_error');
     set_exception_handler('IndexPHP::_exception');
     register_shutdown_function('IndexPHP::_shutdown');
     // 定义常量
     defined('PATH_APP') or define('PATH_APP', './app/');
     defined('PATH_APP_CTRL') or define('PATH_APP_CTRL', PATH_APP . 'ctrl/');
     defined('PATH_APP_VIEW') or define('PATH_APP_VIEW', PATH_APP . 'view/');
     defined('PATH_APP_LIB') or define('PATH_APP_LIB', PATH_APP . 'lib/');
     defined('PATH_APP_LOG') or define('PATH_APP_LOG', PATH_APP . 'log/');
     defined('FILE_APP_CONF') or define('FILE_APP_CONF', PATH_APP . '/conf.php');
     defined('FILE_APP_COMM') or define('FILE_APP_COMM', PATH_APP . '/common.php');
     define('IS_POST', Param::server('REQUEST_METHOD') == 'POST' ? true : false);
     define('HTTP_HOST', Param::server('HTTP_HOST'));
     // 初始化框架
     self::_init();
     // 导入配置
     Config::set(self::import(FILE_APP_CONF));
     Config::get('ENABLE_SESSION') && session_start();
     // 路由处理
     $ca = explode('/', trim(Param::server('PATH_INFO', Config::get('DEFAULT_CTRL_ACTION')), '/'));
     define('CTRL_NAME', strtolower(Param::get(Config::get('PARAM_CTRL', 'c'), !empty($ca[0]) ? $ca[0] : 'index')));
     define('ACTION_NAME', strtolower(Param::get(Config::get('PARAM_ACTION', 'a'), !empty($ca[1]) ? $ca[1] : 'index')));
     // URL参数按顺序绑定变量
     preg_replace_callback('/(\\w+)\\/([^\\/]+)/', function ($match) {
         $_GET[$match[1]] = strip_tags($match[2]);
     }, trim(Param::server('PATH_INFO'), '/'));
     // 导入控制器文件
     if (!self::import(PATH_APP_CTRL . CTRL_NAME . Config::get('FILE_EXTENSION_CTRL', '.class.php'))) {
         throw new Exception('没有控制器:' . CTRL_NAME);
     }
     // 控制器、方法名称变换处理
     $c = self::camelize(CTRL_NAME) . Config::get('POSTFIX_CTRL', 'Controller');
     $a = lcfirst(self::camelize(ACTION_NAME)) . Config::get('POSTFIX_ACTION', '');
     // 控制器类判断是否存在
     if (class_exists($c)) {
         // 导入公共函数库
         self::import(FILE_APP_COMM);
         // 自动加载外部库
         spl_autoload_register('self::_autoload');
         // 调用控制器方法
         call_user_func(array(new $c(), $a));
     }
 }
示例#2
0
 private function __construct()
 {
     $this->userAgent = Param::server('HTTP_USER_AGENT', Param::TYPE_STRING);
     $this->initBroswer();
 }