App.class.php 2.4 KB

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