Response オブジェクトはクライアントにどのようなwebレスポンスを送るのかを表します。 HTTPレスポンスそのものではありません。 その代わりHTTPレスポンスを組み立ててるため必要なヒントがセットになっています。
_Response_オブジェクトに値をセットすればクライントに値が送られるわけではありません。 _Response_は出力されることなしに正しい値がセットされてるかを検査することができます。
_Response_オエブジェクトはDIで取得できます。
<?php
$di->get('aura/web-kernel:response');
// あるいは他のクラスにインジェクトできるように
$di->lazyGet('aura/web-kernel:response');
_Response_オブジェクトはレスポンスの要素をプロパティで表します。
$response->status
はステータスコード、ステタースフレーズ、それにHTTPバージョンを表します。
$response->headers
クッキー以外のヘッダーです。
$response->cookies
クッキーのヘッダーです。
$response->content
はレスポンスのコンテンツを表します。content typeや、charset、disposition、filenameなどに便利です。
$response->cache
キャッシュヘッダーに便利なメソッドです。
$response->redirect
LocationとStatusに使われます。
$response->status
オブジェクトは以下のように使われます。
<?php
// ステータスコードとメッセージ、それにバージョンを一度にセット
$response->status->set('404', 'Not Found', '1.1');
// 個別にセット
$response->status->setCode('404');
$response->status->setPhrase('Not Found');
$response->status->setVersion('1.1');
// ステータスを(メッセージを含めて)取得
$status = $response->status->get(); // "HTTP/1.1 404 Not Found"
// 値を個別に取得
$code = $response->status->getCode();
$phrase = $response->status->getPhrase();
$version = $response->status->getVersion();
?>
$response->headers
オブジェクトは以下のメソッドがあります。
set()
は以前にセットされていた1つの値をリセットし、ヘッダーをセットします。
get()
は1つのあるいは全てのヘッダーを取得します。
<?php
// X-Header-Value: foo
$response->headers->set('X-Header-Value', 'foo');
// X-Header-Valueを取得
$value = $response->headers->get('X-Header-Value');
// 全てのヘッダーを取得
$all_headers = $response->headers->get();
?>
ヘッダーの値をnull、falseあるいは空の文字列をセットするとヘッダーから取り除かれます。0にセットするのでは除かれません。
$response->cookies
オブジェクトは以下のメソッドを持ちます。
setExpire()
はクッキーのデフォルトの有効期限をセットします。
setPath()
はクッキーのデフォルトのパスをセットします。
setDomain()
はクッキーのデフォルトのドメインをセットします。
setSecure()
はクッキーのデフォルトのセキュリティーをセットします。
setHttpOnly()
はクッキーがHTTPによってのみ送られるかのデフォルトをセットします。
set()
クッッキーの名前と値をメタデータと共にセットします。これはPHPの関数setcookie()を真似たものです。
もしメタデータの値で、path、domain、secure、それにhttponlyが指定されていないとデフォルトの値が使われます。
get()
名前でクッキーを返すか、全てのクッキーを一度に返します。
<?php
// 特定のドメインとパスが10分で切れるようにセット
$response->cookies->setDomain('example.com');
$response->cookies->setPath('/');
$response->cookies->setExpire('+600');
// 2つのクッキーをセット
$response->cookies->set('foo', 'bar');
$response->cookies->set('baz', 'dib');
// レスポンスからクッキー情報の配列を取得
$foo_cookie = $response->cookies->get('foo');
// 名前をキーにしたクッキー情報配列を全て取得
$cookies = $response->cookies->get();
?>
クッキー情報配列はこのようなものです。
<?php
$cookies['foo'] = array(
'value' => 'bar',
'expire' => '+600', // UNIXタイムスタンプにstrtotime()を足した値です。
'path' => '/',
'domain' => 'example.com',
'secure' => false,
'httponly' => true,
);
?>
$response->content
オブジェクトはレスポンスコンテントとレスポンスヘッダーのための便利なメソッドを持っています。
set()
レスポンスのコテント本体をセットします。(配列やcallable、オブジェクト、あるいは文字列なんでも構いません。適切に変換されます)
get()
はset()
でセットされたレスポンスのコンテンツ本体を取得します。
setType()
はContent-Type
ヘッダーをセットします。
getType()
がContent-Type
を取得します。(charsetは含まれません)
setCharset()
はContent-Type
をのためのcharacter setをセットします。
getCharset()
は Content-Type
ヘッダーのcharset
の部分を取得します。
setDisposition()
はContent-Disposition
タイプとファイル名をセットします。
setEncoding()
はContent-Encoding
ヘッダーをセットします。
<?php
// set the response content, type, and charset
$response->content->set(array('foo' => 'bar', 'baz' => 'dib'));
$response->content->setType('application/json');
// elsewhere, before sending the response, modify the content based on type
switch ($response->content->getType()) {
case 'application/json':
$json = json_encode($response->content->get());
$response->content->set($json);
break;
// ...
}
?>
$response->cache
オブジェクトはHTTPキャッシュヘッダーのいくつかの便利なメソッドを持っています。
reset()
は全てのキャッシュ関連のヘッダーを取り除きます。
disable()
は全てのキャッシュ関連のヘッダーを取り除き、以下をセットします。
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, proxy-revalidate
Expires: Mon, 01 Jan 0001 00:00:00 GMT
Pragma: no-cache
setAge()
は秒を単位とするAge
ヘッダーをセットします。
setControl()
は一度にCache-Control
ヘッダーの配列全てをセットするかわりに、個別の方法の設定をセットします。
setPublic()
とsetPrivate()
はpublic
とprivate
のキャッシュコントロールをセットします。(片方の機能をオフにします)
setMaxAge()
とsetSharedMaxAge()
はmax-age
とs-maxage
を指定します。(nullかfalseを取り除くためにセットします)
setNoCache()
とsetNoStore()
はno-cache
とno-store
キを指定します。(nullかfalseを取り除くためにセットします)
setMustRevalidate()
とsetProxyRevalidate()
はmust-revalidate
と proxy-revalidate
を指定します。 (nullかfalseを取り除くためにセットします)
setEtag()
とsetWeakEtag()
はETag
ヘッダーの値をセットします。
setExpires()
Expires
ヘッダーの値をセットします。日付やDateTime
オブジェクトは適切にフォーマットされたHTTP日付に変換されます。
setLastModified()
はLast-Modified
ヘッダーの値をセットします。日付やDateTime
オブジェクトは適切にフォーマットされたHTTP日付に変換されます。
setVary()
はVary
ヘッダーをセットします。コンマで分けられた配列を渡します。
キャッシュヘッダーについてさらにお知りになりたいときはPalizineのHTTP 1.1 headers specの記述をご覧ください。
$response->redirect
オブジェクトはリダイレクトのためのLocationヘッダーのいくつかの便利なメソッドを持っています。
to($location, $code = 302, phrase = null)
はリダイレクトのためのステータスと任意のヘッダー、メッセージをセットします。
afterPost($location)
は$location
に303 See
Other
ステータスでリダイレクトします。これは自動的にHTTPキャッシュを無効にします。
created($location)
は201 Created
で$location
にリダイレクトします。
movedPermanently($location)
は301 Moved Permanently
で$location
にリダイレクトします。
found($location)
は302 Found
で$location
にリダイレクトします。
seeOther($location)
は303 See Other
で$location
にリダイレクトします。これは自動的にHTTPキャッシュを無効にします。
temporaryRedirect($location)
は307 Temporary Redirect
で$location
にリダイレクトします。
permanentRedirect($location)
は308 Permanent Redirect
で$location
にリダイレクトします。