Response 类別

Response 类別包含处理 HTTP 回應及瀏覽器輸出的方法。

設定狀態表頭

在 Fuel 裡,狀態表頭被視为「特別」的表頭,你想保留其他表頭的話別設定它, 狀態表頭在控制器裡設定如下:

$response = new Response($body, 404);

設定狀態表頭和其他表頭

$headers = array (
    'Cache-Control'     => 'no-cache, no-store, max-age=0, must-revalidate',
    'Expires'           => 'Mon, 26 Jul 1997 05:00:00 GMT',
    'Pragma'            => 'no-cache',
);
$response = new Response($body, 404, $headers);

forge($body = null, $status = 200, array $headers = array())

forge 方法建立一个 Response 类別的新實例。

靜態
參数
參数 預設 描述
$body
null
回應主體,也就是你想回傳給呼叫者的回應。
$status
200
給此回應的 HTTP 狀態码。預設值为 200 OK。
$headers
array()
任何應成为該回應一部份的 HTTP 表頭。
回傳 Response 物件
觸发 'response_created' 事件在物件實例化之後
範例
// 建立一个回應物件,使用一个 View 做为主體,以及一个 404 NOT FOUND 狀態码
return Response::forge(View::forge('errors/404page'), 404);

redirect($url = '', $method = 'location', $redirect_code = 302)

redirect 方法提供不同的重導到新 URL 的方法。

靜態
參数
參数 預設 描述
$url
''
要重導向的 URL。
$method
'location'
要使用的重導向方法。支援 'location' 與 'refresh'。
$redirect_code
302
要送回做为重導向一部分的 HTTP 狀態码。
回傳 此方法終止目前的指令码,不回傳。
範例
// 使用一个 URL
Response::redirect('http://example.com/home', 'refresh');

// 或使用一个相對 URI
Response::redirect('site/about');

这个方法支援 URL 的萬用字元替換。詳情請見 Uri::segment_replace()。 你可以透過在你应用程序的 config.php 設定 response.redirect_with_wildcardsfalse 來停用它。

redirect_back($url = '', $method = 'location', $redirect_code = 302)

redirect_back方法能让你重導向回來源頁面, 并提供不同的重導到新 URL 的方法。如果前一頁不是你应用程序的一部分(也就是說,該使用者來自其他網站), 或沒給 URL,它会重導向应用程序首頁。

靜態
參数
參数 預設 描述
$url
''
要重導向的 URL。
$method
'location'
要使用的重導向方法。支援 'location' 與 'refresh'。
$redirect_code
302
要送回做为重導向一部分的 HTTP 狀態码。
回傳 此方法終止目前的指令码,不回傳。
範例
// 重定向回頁面。如果沒有 'back',前往到 dashboard 頁面
Response::redirect_back('/dashboard', 'refresh');

这个方法支援 URL 的萬用字元替換。詳情請見 Uri::segment_replace()。 你可以透過在你应用程序的 config.php 設定 response.redirect_with_wildcardsfalse 來停用它。

set_status($status = 200)

set_status 方法能让你更新一个 Response 物件的 HTTP 狀態码設定。

靜態
參数
參数 預設 描述
$status
200
給此回應的 HTTP 狀態码。預設值为 200 OK。
回傳 目前物件,鍊結用
範例
$response = new Response();

// 这将是一个 NOT FOUND 回應
$response->set_status(404);

set_header($name, $value, $replace)

set_header 方法可以設定自訂的 HTTP 表頭。

靜態
參数
參数 預設 描述
$name 必要 要添加的表頭名稱。
$value 必要 需要被添加到 HTTP 表頭的字串。
$replace
true
預設所有表頭将被同名的值取代, 如果你設定这个參数为 false,表頭将不会也不能被覆寫。
回傳
範例
$response = new Response();

// 我們将輸出 PDF
$response->set_header('Content-Type', 'application/pdf');

// 将被稱为 downloaded.pdf
$response->set_header('Content-Disposition', 'attachment; filename="downloaded.pdf"');

// 設定不快取
$response->set_header('Cache-Control', 'no-cache, no-store, max-age=0, must-revalidate');
$response->set_header('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT');
$response->set_header('Pragma', 'no-cache');

// 更多範例
$response->set_header('Content-Language', 'en');
$response->set_header('Content-Type', 'text/html; charset=utf-8');

return $response;

注意名稱是唯一的,如果相同名稱被使用的話将覆寫掉其他的。

get_header($name = null)

get_header 方法能让你取回一个先前設定的自訂 HTTP 表頭。

靜態
參数
參数 預設 描述
$name 選擇性 要取得的表頭名稱。如果沒給,所有表頭会被回傳。
回傳 混合。在单一表頭的情況下是字串,在所有表頭被回傳的情況下是陣列。
範例
$response = new Response();
$response->set_header('Pragma', 'no-cache');

// 回傳 'no-cache'
$header = $response->get_header('Pragma');

// 回傳 array('Pragma' => 'no-cache')
$header = $response->get_header();

body($value = false)

body 方法允許取得目前回應主體,或設定一个新的。

靜態
參数
參数 預設 描述
$value 選擇性 要設定的 Response 主體。如果沒給,目前回應主體会被回傳。
回傳 混合。目前回應主體,或給鍊結用的目前回應物件。
範例
$response = new Response();
$response->body('This is the response body');

// 回傳 'This is the response body'
$body = $response->body();

send_headers()

send_headers 方法傳送設定的表頭到瀏覽器,包含請求的 HTTP 狀態。

靜態
參数
回傳
範例
$response->send_headers();

請注意,通常你不必手动呼叫这个方法,Fuel 会打理好此方法做为請求处理的一部份。

send($send_headers = false)

send 方法发送回應主體到輸出緩衝(意即輸出)。

靜態
參数
參数 預設 描述
$send_headers 選擇性 如果为 true,在发送回應主體之前发送任何定義的 HTTP 表頭。
回傳
範例
// 寫出任何回應主體
$response->send();

請注意,通常你不必手动呼叫这个方法,Fuel 会打理好此方法做为請求处理的一部份。