ThinkPHP框架的生命周期


发文时间:2022年08月01日 10:26:47     编辑:Aaron      标签:thinkPHP框架 1462


熟悉框架的生命周期,才能更好的去掌握它,从而实现我们想要的代码逻辑。(本博客框架用的就是thinkPHP)

结合官方文档和自己的一些理解所写

未命名文件.png

1、入口文件

  文件名:index.php 

  位置: public/index.php

  作用:用户通过访问入口文件,发起服务请求,可在入口文件定义常量或引导文件等。

2、引导文件

  文件名:start.php

  位置:thinkphp/start.php

  作用:加载常量-> 加载环境变量->注册自动加载->注册错误与异常->加载惯性配置->执行应用

3、注册自动加载

  类方法:\think\Loader::register();

  位置:thinkphp/base.php

  作用:将所有符合规范的类库和Composer依赖加载的第三方类库自动加载,执行流程如下

   注册自动加载方法->注册系统命名空间->加载类库的映射文件->注册Composer自动加载->注册extend扩展目录

4、注册错误和异常机制

  类方法:\think\Error::register();

  位置:thinkphp/base.php

  作用:应用关闭,错误处理,异常处理

5、应用初始化 (从入口文件到注册错误和异常机制都可以理解为应用初始化部分。)

  应用初始化包括如下:

    1.     加载应用(公共)配置;

    2.     加载扩展配置文件(由extra_config_list定义);

    3.     加载应用状态配置;

    4.     加载别名定义;

    5.     加载行为定义;

    6.     加载公共(函数)文件;

    7.     注册应用命名空间;

    8.     加载扩展函数文件(由extra_file_list定义);

    9.     设置默认时区;

    10.     加载系统语言包; 

6、URL访问检测

   应用初始化完成后,会以URL的形式访问检测,包括PATH_INFO检测和后缀检测。

官方解释如下:

thinkPHP5.0的URL访问必须是PATH_INFO方式(包括兼容方式)的URL地址,例如:

http://serverName/index.php/index/index/hello/val/value
所以,如果你的环境只能支持普通方式的URL参数访问,那么必须使用

http://serverName/index.php?s=/index/index/hello&val=value
如果是命令行下面访问入口文件的话,则通过

$php index.php index/index/hello/val/value...
获取到正常的$_SERVER['PATH_INFO']参数后才能继续。

7、路由检测

   如果开启了url_route_on参数的话,会首先进行URL的路由检测。

   如果一旦检测到匹配的路由,根据定义的路由地址会注册到相应的URL调度。

   5.0的路由地址支持如下方式:

    1. 路由到模块/控制器/操作;

    2. 路由到外部重定向地址;

    3. 路由到控制器方法;

    4. 路由到闭包函数;

    5. 路由到类的方法;

8、分发请求

   在完成了URL检测和路由检测之后,路由器会分发请求到对应的路由地址,这也是应用请求的生命周期中最重要的一个环节。在这一步骤中,完成应用的业务逻辑及数据返回。建议统一使用return返回数据,而不是echo输出,如非必要,请不要使用exit或者die中断执行。

9、响应输出

   控制器的所有操作方法都是return返回而不是直接输出,系统会调用Response::send方法将最终的应用返回的数据输出到页面或者客户端,并自动转换成default_return_type参数配置的格式。所以,应用执行的数据输出只需要返回一个正常的PHP数据即可。

10、应用结束

   应用数据响应完成输出后,应用周期基本结束,系统会在应用输出或中断后进行日志写入操作。



本文部分内容摘自官方文档,URL链接如下

https://www.kancloud.cn/manual/thinkphp5/118011

 

若无特殊说明,此文章为博主原创。
写稿不易,如需转载,请注明出处: https://www.aaroner.cn/art/82.html




SITE MAP

  FOLLOW US