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_wildcards
を false
に設定すると、この機能を無効にできます。
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_wildcards
を false
に設定すると、この機能を無効にできます。
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 メソッドは、カスタムHTTP ヘッダをセットします。
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$name |
必須 |
付け加えるヘッダ名。 |
$value |
説明 |
HTTP ヘッダに付加される必要がある文字列です。 |
$replace |
true
|
デフォルトでは同名のヘッダの値はすべて置き換えられます。false がセットされた場合は、ヘッダの書き換えはありませんし、書き換え出来ません。 |
|
返り値 |
void |
例 |
$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 メソッドは、セットされたカスタム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 メソッドは、セットされたヘッダおよび、HTTP ステータスコードをブラウザに出力します。
静的 |
いいえ |
パラメータ |
なし |
返り値 |
void |
例 |
$response->send_headers();
|
通常は、このメソッドを手動で呼ぶ必要はありません。 Fuel はリクエストを処理する過程でこれらを自動的に行います。
send($send_headers = false)
sendメソッドは、出力バッファに、レスポンス本文を送ります。 (つまり出力されます)
静的 |
いいえ |
パラメータ |
パラメータ |
デフォルト |
説明 |
$send_headers |
任意 |
もしtrueがセットされた場合、レスポンス本文を出力する前に、HTTP ヘッダを送信します。 |
|
返り値 |
void |
例 |
// response 本文が何であっても echo する
$response->send();
|
通常は、このメソッドを手動で呼ぶ必要はありません。 Fuel はリクエストを処理する過程でこれらを自動的に行います。