用户发起的请求都会通过应用的入口文件,一般是 ==public/index.php==文件。固然,你也能够更改或者增长新的入口文件。php
一般入口文件的代码都比较简单,一个普通的入口文件代码以下:thinkphp
// 应用入口文件 // 定义项目路径 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php';
通常入口文件以定义一些常量为主,支持的常量请参考后续的内容或者附录部分。一般,咱们不建议在应用入口文件中加入过多的代码,尤为是和业务逻辑相关的代码。app
// 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();源码分析