牛骨文教育服务平台(让学习变的简单)
博文笔记

TP5执行流程

创建时间:2017-03-31 投稿人: 浏览次数:2272

1. start.php文件

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

2. base.php文件

1. 定义全局变量,主要是各文件夹路径的定义,以及环境变量的检查(比如服务器是否是windows)
2. 加载libary	hinkloader.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. 响应数据,并输出到客户端。结束本次请求
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。