### Response的实例化
- 再调用http的run方法,再进过路由的调度,最终再Dispath的run方法中进行Response的实例化。
```
public function run() {
....
$data = $this->exec();
return $this->autoResponse($data);
}
```
- exec(); 方法其实是进行实例化控制器,并执行控制器操作方法,最终返回执行结果。再控制器方法中可以直接return 出结果,框架会自动构建出Response对象。
- 将结果 带入autoResponse函数,该函数里面,可以看到Resconse对象的实例化。
~~~
protected function autoResponse($data): Response
{
if ($data instanceof Response) {
$response = $data;
} elseif (!is_null($data)) {
// 默认自动识别响应输出类型
$type = $this->request->isJson() ? 'json' : 'html';
$response = Response::create($data, $type);
} else {
// 获取缓冲数据,并清空缓冲
$data = ob_get_clean();
$content = false === $data ? '' : $data;
$status = '' === $content && $this->request->isJson() ? 204 : 200;
$response = Response::create($content, 'html', $status);
}
return $response;
}
~~~
- 有以上代码可以看出,再控制器方法中只需要return 出数据即可, 也可以return出Response对象。(若控制器方法return的数据是response实例,则直接返回,若控制器方法return的数据不是response对象,则通过autoResopnse方法,构造出一个response对象)
- 由autoResponse函数可以看出,在控制器没有返回明确的response对象时,会通过识别请求的类型构造出相应的response对象。
- linux 基础
- ln 链接
- linux 环境变量
- linux 进程查看
- nginx
- redis
- redis 安装
- php 底层原理
- php源码编译安装
- phpize文件
- php命令行
- php7 新特性
- php7 变量
- php7 生命周期
- php sapi运行模式
- php 内存管理
- php 运行机制和Zend虚拟机
- php垃圾回收
- php 基础
- php.ini
- php函数
- 面向对象
- php 文件上传
- ob缓冲和页面静态化
- php中的session
- php cURL扩展
- composer 应用
- php 错误和异常
- thinkphp
- tp6容器和依赖注入
- tp6 的服务
- tp6事件
- tp6 多应用
- tp6路由
- tp6 cache
- tp6 request
- tp6 中间件
- tp6 response
- tp6 Db
- 备忘录
- 数据库表