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にリダイレクトします。