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' イベント
// response オブジェクトを作成する。View を body として使い、ステータスコードは 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 にリダイレクトさせることができます。 前のページが自身のアプリケーションの一部ではない (つまり、ユーザーが別の Web サイトから来た) 場合や URL が明示されない場合は、 アプリケーションのホームページにリダイレクトします。

静的 はい
パラメータ
パラメータ デフォルト 説明
$url
''
リダイレクト先の URL
$method
'location'
使用するリダイレクションメソッド。'location' と 'refresh' がサポートされています。
$redirect_code
302
リダイレクトの一部として返される HTTP ステータスコード
返り値 このメソッドは、現在のスクリプトを終了し、値を返却しません。
// 前のページにリダイレクトする。「前のページ」がなければ、dashboard ページに移動する
Response::redirect_back('/dashboard', 'refresh');

このメソッドは、URLのワイルドカードによる置換をサポートします。Uri::segment_replace() をご覧ください。 アプリケーションの config.php で response.redirect_with_wildcardsfalse に設定すると、この機能を無効にできます。

set_status($status = 200)

set_status メソッドは、ResponseオブジェクトのHTTP ステータスコードを更新します。

静的 No
パラメータ
パラメータ デフォルト 説明
$status
200
HTTP ステータスコード。デフォルトは、200 OK です。
返り値 現在のオブジェクト、メソッドチェーン用
$response = new Response();

// NOT FOUND response が返る
$response->set_status(404);

set_header($name, $value, $replace)

set_header メソッドは、カスタムHTTP ヘッダをセットします。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$name 必須 付け加えるヘッダ名。
$value 説明 HTTP ヘッダに付加される必要がある文字列です。
$replace
true
デフォルトでは同名のヘッダの値はすべて置き換えられます。false がセットされた場合は、ヘッダの書き換えはありませんし、書き換え出来ません。
返り値 Response
$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;

名前はユニークであることに注意してください。同じ名前が使用された場合、上書きされます。

set_headers($headers, $replace)

The set_headers メソッドは複数のカスタム HTTP ヘッダを一度に設定できます。

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$headers 必須 ヘッダ名/値の連想配列。
$replace
true
デフォルトではすべてのヘッダで同じ名前の以前の値は置き換えられます。 false に設定すると、ヘッダは上書きされず、また、上書きできません。
返り値 Response
$response = new Response();

// downloaded.php と呼ばれる PDF をキャッシュなしで出力します
$response->set_headers(array
	'Content-Type' => 'application/pdf',
	'Content-Disposition' => 'attachment; filename="downloaded.pdf"',
	'Cache-Control' => 'no-cache, no-store, max-age=0, must-revalidate',
	'Expires' => 'Mon, 26 Jul 1997 05:00:00 GMT');
	'Pragma' => 'no-cache',
));

return $response;

ヘッダ名はユニークであり、既存の名前が使われた場合は上書きされることに注意して下さい。

get_header($name = null)

get_header メソッドは、セットされたカスタムHTTPヘッダを取得します。

静的 No
パラメータ
パラメータ デフォルト 説明
$name 任意 取得したいヘッダの名称。指定しない場合にはすべてのヘッダが返却されます。
返り値 Mixed. 1つのヘッダを指定した場合には文字列、すべてのヘッダが返却される場合には配列。
$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 任意 セットするレスポンス本文。もし本文を与えなかった場合、現在のレスポンス本文が返ります。
返り値 Mixed. 現在のレスポンス本文、もしくは、現在のレスポンスオブジェクト。
$response = new Response();
$response->body('This is the response body');

// 'This is the response body' を返す
$body = $response->body();

send_headers()

send_headers メソッドは、セットされたヘッダおよび、HTTP ステータスコードをブラウザに出力します。

静的 いいえ
パラメータ なし
返り値 void
$response->send_headers();

通常は、このメソッドを手動で呼ぶ必要はありません。 Fuel はリクエストを処理する過程でこれらを自動的に行います。

send($send_headers = false)

sendメソッドは、出力バッファに、レスポンス本文を送ります。 (つまり出力されます)

静的 いいえ
パラメータ
パラメータ デフォルト 説明
$send_headers 任意 もしtrueがセットされた場合、レスポンス本文を出力する前に、HTTP ヘッダを送信します。
返り値 void
// response 本文が何であっても echo する
$response->send();

通常は、このメソッドを手動で呼ぶ必要はありません。 Fuel はリクエストを処理する過程でこれらを自動的に行います。