TP5执行流程

1. start.php文件

1. 导入base.php文件
2. 执行App:run()->send();函数运行框架;

2. base.php文件

1. 定义全局变量,主要是各文件夹路径的定义,以及环境变量的检查(比如服务器是否是windows)
2. 加载libary\think\loader.php文件,注册自动加载机制,注册异常处理机制。
3. 加载根目录下的环境变量文件(.env),如果存在则配置环境变量(使用putenv()函数)。
4. 加载默认配置文件。

3. 执行App::run()->send()函数

1. 调用Request::instance(),初始化Request,该函数是一个单例模式的函数。
2. 调用self::instance(),初始化应用。
    2.1. 判断是否为调试模式,是否输出错误信息
    2.2. 注册应用命名空间
    2.3. 加载config.php中配置的extra_file_list扩展函数文件。
    2.4. 设置config.php中配置的default_timezone默认时区
    2.5. 执行Hook::listen('app_init');
3. 绑定路由模块,如果在配置文件中定义了auto_bind_module则自动绑定入口文件。
4. 根据配置文件中配置的default_fileter,设置默认过滤函数,过滤请求内容
5. 判断是否开启多语言机制,并加载相应的语言包文件。
6. 根据请求路由,获得调度信息,并保存调度信息。
7. 判断请求类型,以及是否设置了请求缓存,如果存在并没有过期则执行重定向。该操作会极大的节省服务器的性能,但也会让数据延迟,适合数据不经常更新的页面使用。
   7.1. redirect类型,在配置文件里开启了request_cache后,再次请求同一个页面,会直接重定向到原来的缓存页面,不会再重新加载页面。
    7.2. module类型,普通的页面请求,会调用self::module()函数,获得请求的模块,控制器和操作,并通过反射函数self::invokeMethod()执行action。
    7.3. controller类型:暂时还不知道什么时候回执行。
    7.4. method类型:执行回调函数,也是通过self::invokeMethod()反射函数来执行的。
     7.5. function类型:执行闭包函数,比如查询的是否传入的闭包函数。这个通过self::invokeFunction()方法执行的
     7.6. response类型:响应页面请求。
     7.7. 如果不满足以上几种请求,则会抛出 InvalidArgumentException(dispatch type not support)异常。
8. 响应数据,并输出到客户端。结束本次请求
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值