关于thinkPHP的路由(二)
接上篇。但是这次希望从框架的角度来尝试认识路由认识URL及认识框架。
所有请求都是从入口文件开始的。这是共识。
在thinkPHP 5.0.24 入口文件如下:
加载框架引导文件: start.php
首先 加载基础文件 base.php
然后 执行应用。
所以 :真正的"顺序" base.php ===> start.php===>index.php
base.php
首先是定义系统关键常量。
// 载入Loader类
require CORE_PATH . 'Loader.php'; 主要是实现自动加载。
// 注册自动加载
\think\Loader::register();
// 注册错误和异常处理机制
\think\Error::register();
// 加载惯例配置文件
\think\Config::set(include THINK_PATH . 'convention' . EXT);
2. 执行应用
App::run()->send();
这是整个框架的核心。当我执行一个请求的时候,走过前几步之后,来到App.php。
run方法以请求对象Request作为参数。返回一个 Response对象。
然后由这个对象去调用send()方法。即发送数据到客户端。
这时,整个程序的生命周期就结束了。
所以核心 就是 app.php 和 request.php 这两个文件。
因为请求(request)是整个程序的动力(驱动)。处理请求(app)自然非常重要。
Request.php 通过instance方法巧妙的返回自己的实例对象。
接着加载配置文件,initCommon()初始化应用。
这里 判断有没有定义 BIND_MODULE 就是上一篇说的在入口文件加入绑定入口文件的那句。
最麻烦的URL URL/index.php/index/index/index
如果开启支持多模块,且绑定了入口 BIND_MODULE 即以: URL/index.php/index/index 来访问(省略了一个index)
如果要index.php也隐藏。 就是 隐藏入口文件 不在代码范围内了。