// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006~2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
namespace think;// 放到同一个大包 下面
use think\Config;// 使用 配置类
use think\Env;// 使用环境类
use think\Exception;// 使用异常包
use think\exception\HttpException;// 使用异常包 http包
use think\exception\HttpResponseException;// 使用异常包 http response 包
use think\Hook;// 使用 钩子 类
use think\Lang;// 使用 语言 类
use think\Loader;// 使用 加载 类
use think\Log;// 使用 日志 类
use think\Request;// 使用 请求 类
use think\Response;// 使用 返回 类
use think\Route;// 使用 路由 类
// 这个类应算是 皇上类了 可以调度基本上 全部的资源
/**
* App 应用管理
* @author liu21st <liu21st@gmail.com>
*/
class App
{
/**
* @var bool 是否初始化过
*/
protected static $init = false;// 初始化 标志位
/**
* @var string 当前模块路径
*/
public static $modulePath;// 初始化 当前 模块 路径
/**
* @var bool 应用调试模式
*/
public static $debug = true;// 应用调试 模式
/**
* @var string 应用类库命名空间
*/
public static $namespace = 'app';// 应用 类库 命名空间
/**
* @var bool 应用类库后缀
*/
public static $suffix = false;// 应用 类库 后缀
/**
* @var bool 应用路由检测
*/
protected static $routeCheck;// 应用 路由 检测
/**
* @var bool 严格路由检测
*/
protected static $routeMust; // 严格 路由检测
protected static $dispatch;// 路由调度
protected static $file = []; // 文件加载
/**
* 执行应用程序
* @access public
* @param Request $request Request对象
* @return Response
* @throws Exception
*/
public static function run(Request $request = null)
{// thinkphp经过了 自动加载、错误接管、配置文件预设,终于开始执行了。
// 第一步:获取请求参数
is_null($request) && $request = Request::instance();
// self::$instance = new static($options); 执行了 这个 instance
// 默认 没有传入任何数值,is_null 所以执行 后面 $request = Request::instance();
// 这个写法 真的 很经典,我喜欢你,老刘,哈哈
// 最终获取了 一个 request 对象
$config = self::initCommon();// 加载 初始化 配置 文件 选项