ThinkPHP5.0学习-生命周期

URL请求的生命周期

客户端->通过URL发送访问请求->服务端->返回请求的数据->客户端

TP5生命周期

入口文件->引导文件->注册自动加载->注册错误和异常机制->应用初始化->URL访问检查->路由检测->分发请求->响应输出->应用结束

一.入口文件

1.文件名:index.php

2.位置:public/index.php

3.用户通过入口文件,发起服务请求,是整个应用的入口与起点

4.任务:定义常量,加载引导文件,不要放任何业务处理代码

5.代码:

// 定义应用目录
define('APP_PATH', __DIR__ . '/../application/');
// 加载框架引导文件
require __DIR__ . '/../thinkphp/start.php';

二、引导文件

1.文件名:start.php

2.位置:thinkphp/start.php

3.执行

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

三、注册自动加载

1.类方法:Loader::register()

2.作用:将所有符合规范的类库(包括Composer依赖加载的第三方类库)自动加载

3.执行流程

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

四、注册错误和异常机制

执行Error::register()注册错误和异常处理机制

a.应用关闭方法:think\Error::appShutdown

b.错误处理方法:thinkError::appError

c.异常处理方法:think\Error::appException

五、应用初始化

严格意义上讲,前面的内容都可算做应用初始化部分:

加载公共配置->加载公共扩展配置->加载应用状态配置->加载别名定义->加载行为定义->加载公共函数文件->注册应用命名空间->加载扩展函数文件->设置默认时区->加载系统语言包

六、URL访问检测

URL必须是PATH_INFO格式才允许继续运行。

1.PATH_INFO标准格式:

http://域名/index.php/模块名/控制器名/操作名/参数键值对

举例:http://tp5.com/index.php/index/user/add/id/10/name/peter

2.PATH_INFO兼容格式:

http://域名/index.php?s=/模块名/控制器名/操作名&参数键值对

举例:http://tp5.com/index.php?s=index/user/add&id=10&name=peter

七、路由检测

1.如果开启了rul_route_on参数,则首先进行URL路由检测

2.一旦检测到匹配的路由,根据路由规则会注册到相应的URL调度

3.TP5支持的路由规则如下:

  1. 路由到模块/控制器/操作
    1. 这是默认路由模式,如果关闭路由或者路由检测无效则执行该模式。
  2. 路由到外部重定向地址
  3. 路由到控制器方法
  4. 路由到闭包函数
  5. 路由到类的方法

八、分发请求

1.将用户请求分发到对应的路由地址,完成应用的业务逻辑并返回数据。

2.统一使用return返回数据,不要用echo直接输出

3.如非必要,请不要使用exit或者die中断执行

4.分发请求支持TP5的五种路由地址模式:

  1. 路由到模块/控制器/操作
  2. 路由到外部重定向地址
  3. 路由到控制器方法
  4. 路由到闭包函数
  5. 路由到类的方法

九、响应输出

1.控制器正常返回的数据通常是:字符串(String)或数组(Array)格式

2.统一使用return返回数据,而不是直接输出,这样可以自动调用Response::send()方法将最终的返回数据输出到页面或客户端,并自动转换成default_return_type参数配置的格式(XML,JSON等)

例如:return 'ThinkPHP5教学课程';

十、应用结束

1.响应输出完成后,应用生命周期基本结束,可以写日志报告;

2.日志包括两部分:用户调式输出和系统自动生成;

日志在应用结束后,自动写入。

 

 

 

 

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页