发文时间:2022年08月01日 10:26:47 编辑:Aaron 标签:thinkPHP框架 1462
熟悉框架的生命周期,才能更好的去掌握它,从而实现我们想要的代码逻辑。(本博客框架用的就是thinkPHP)
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();
作用:应用关闭,错误处理,异常处理
5、应用初始化 (从入口文件到注册错误和异常机制都可以理解为应用初始化部分。)
应用初始化包括如下:
加载应用(公共)配置;
加载扩展配置文件(由extra_config_list定义);
加载应用状态配置;
加载别名定义;
加载行为定义;
加载公共(函数)文件;
注册应用命名空间;
加载扩展函数文件(由extra_file_list定义);
设置默认时区;
加载系统语言包;
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的路由地址支持如下方式:
路由到模块/控制器/操作;
路由到外部重定向地址;
路由到控制器方法;
路由到闭包函数;
路由到类的方法;
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
ThinkPHP框架的生命周期
发文时间:2022年08月01日 10:26:47 编辑:Aaron 标签:thinkPHP框架 1462
熟悉框架的生命周期,才能更好的去掌握它,从而实现我们想要的代码逻辑。(本博客框架用的就是thinkPHP)
结合官方文档和自己的一些理解所写
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、应用初始化 (从入口文件到注册错误和异常机制都可以理解为应用初始化部分。)
应用初始化包括如下:
加载应用(公共)配置;
加载扩展配置文件(由extra_config_list定义);
加载应用状态配置;
加载别名定义;
加载行为定义;
加载公共(函数)文件;
注册应用命名空间;
加载扩展函数文件(由extra_file_list定义);
设置默认时区;
加载系统语言包;
6、URL访问检测
应用初始化完成后,会以URL的形式访问检测,包括PATH_INFO检测和后缀检测。
7、路由检测
如果开启了url_route_on参数的话,会首先进行URL的路由检测。
如果一旦检测到匹配的路由,根据定义的路由地址会注册到相应的URL调度。
5.0的路由地址支持如下方式:
路由到模块/控制器/操作;
路由到外部重定向地址;
路由到控制器方法;
路由到闭包函数;
路由到类的方法;
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