源码分析---入口篇
源码分析
应用入口
用户发起的请求都会经过应用的入口文件,通常是 ==public/index.php==文件。当然,你也可以更改或者增加新的入口文件。
通常入口文件的代码都比较简单,一个普通的入口文件代码如下:
// 应用入口文件// 定义项目路径define('APP_PATH', __DIR__ . '/../application/');// 加载框架引导文件require __DIR__ . '/../thinkphp/start.php';
一般入口文件以定义一些常量为主,支持的常量请参考后续的内容或者附录部分。通常,我们不建议在应用入口文件中加入过多的代码,尤其是和业务逻辑相关的代码。
加载引导文件
// ThinkPHP 引导文件// 1. 加载基础文件require __DIR__ . '/base.php';// 2. 执行应用App::run()->send();
加载基础文件
// __DIR__ . '/base.php'文件//定义常量define('THINK_VERSION', '5.0.24');....//常量太多省略了部分// 载入Loader类require CORE_PATH . 'Loader.php';// 加载环境变量配置文件if (is_file(ROOT_PATH . '.env')) { $env = parse_ini_file(ROOT_PATH . '.env', true); foreach ($env as $key => $val) { $name = ENV_PREFIX . strtoupper($key); if (is_array($val)) { foreach ($val as $k => $v) { $item = $name . '_' . strtoupper($k); putenv("$item=$v"); } } else { putenv("$name=$val"); } }}// 注册自动加载\think\Loader::register();// 注册错误和异常处理机制\think\Error::register();// 加载惯例配置文件\think\Config::set(include THINK_PATH . 'convention' . EXT);
该部分主要是定义一些系统常量,关键点是引入了自动加载类并且注册了自动加载,使得框架可以自动引入类文件,业务层只要直接use对应命名空间的类即可进行实例化,注册错误及异常处理机制, 加载默认配置等操作。
最后就是应用启动,App::run()->send();