### 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
- 備忘錄
- 數據庫表