App.class.php
2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2012 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
/**
* ThinkPHP 应用程序类 精简模式
* @category Think
* @package Think
* @subpackage Core
* @author liu21st <liu21st@gmail.com>
*/
class App {
/**
* 运行应用实例 入口文件使用的快捷方法
* @access public
* @return void
*/
static public function run() {
// 设置系统时区
date_default_timezone_set(C('DEFAULT_TIMEZONE'));
// 加载动态项目公共文件和配置
load_ext_file();
// 项目初始化标签
tag('app_init');
// URL调度
Dispatcher::dispatch();
// 项目开始标签
tag('app_begin');
// Session初始化 支持其他客户端
if(isset($_REQUEST[C("VAR_SESSION_ID")]))
session_id($_REQUEST[C("VAR_SESSION_ID")]);
if(C('SESSION_AUTO_START')) session_start();
// 记录应用初始化时间
if(C('SHOW_RUN_TIME')) G('initTime');
App::exec();
// 项目结束标签
tag('app_end');
// 保存日志记录
if(C('LOG_RECORD')) Log::save();
return ;
}
/**
* 执行应用程序
* @access public
* @return void
* @throws ThinkExecption
*/
static public function exec() {
// 安全检测
if(!preg_match('/^[A-Za-z_0-9]+$/',MODULE_NAME)){
throw_exception(L('_MODULE_NOT_EXIST_'));
}
//创建Action控制器实例
$group = defined('GROUP_NAME') ? GROUP_NAME.'/' : '';
$module = A($group.MODULE_NAME);
if(!$module) {
// 是否定义Empty模块
$module = A("Empty");
if(!$module)
// 模块不存在 抛出异常
throw_exception(L('_MODULE_NOT_EXIST_').MODULE_NAME);
}
//执行当前操作
call_user_func(array(&$module,ACTION_NAME));
return ;
}
}