1 フォロワー

クラス yii\web\Response

継承yii\web\Response » yii\base\Response » yii\base\Component » yii\base\BaseObject
実装yii\base\Configurable
利用可能なバージョン2.0
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/web/Response.php

ウェブレスポンスクラスは、HTTPレスポンスを表します。

クライアントに送信される$headers$cookies、および$contentを保持します。また、HTTPステータスコードも制御します。

Responseは、デフォルトでyii\web\Applicationでアプリケーションコンポーネントとして構成されています。そのインスタンスには、`Yii::$app->response` を介してアクセスできます。

次の例のように、アプリケーション設定の`components`の下に配列を追加することで、その設定を変更できます。

'response' => [
    'format' => yii\web\Response::FORMAT_JSON,
    'charset' => 'UTF-8',
    // ...
]

Responseの詳細と使用方法については、レスポンスに関するガイド記事を参照してください。

公開プロパティ

継承されたプロパティを非表示

プロパティ 説明 定義元
$acceptMimeType string リクエストのACCEPTヘッダーからこのレスポンス用に選択されたMIMEタイプ(例:`application/json`)。 yii\web\Response
$acceptParams array 選択されたMIMEタイプに関連付けられたパラメーター(例:`['q' => 1, 'version' => '1.0']`)。 yii\web\Response
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされた動作のリスト。 yii\base\Component
$charset string|null テキストレスポンスの文字セット。 yii\web\Response
$content string|null レスポンスの内容。 yii\web\Response
$cookies yii\web\CookieCollection Cookieコレクション。 yii\web\Response
$data mixed 元のレスポンスデータ。 yii\web\Response
$downloadHeaders string 添付ファイル名。 yii\web\Response
$exitStatus integer 終了ステータス。 yii\base\Response
$format string レスポンス形式。 yii\web\Response
$formatters array 指定された$formatのレスポンスコンテンツにデータをコンバートするためのフォーマッタ。 yii\web\Response
$headers yii\web\HeaderCollection ヘッダーコレクション。 yii\web\Response
$httpStatuses array HTTPステータスコードと対応するテキストのリスト。 yii\web\Response
$isClientError boolean このレスポンスがクライアントエラーを示しているかどうか。 yii\web\Response
$isEmpty boolean このレスポンスが空かどうか。 yii\web\Response
$isForbidden boolean このレスポンスが現在のリクエストが禁止されていることを示しているかどうか。 yii\web\Response
$isInformational boolean このレスポンスが情報提供用かどうか。 yii\web\Response
$isInvalid boolean このレスポンスに有効な$statusCodeがあるかどうか。 yii\web\Response
$isNotFound boolean このレスポンスが現在リクエストされたリソースが見つからないことを示しているかどうか。 yii\web\Response
$isOk boolean このレスポンスがOKかどうか。 yii\web\Response
$isRedirection boolean このレスポンスがリダイレクトかどうか。 yii\web\Response
$isSent boolean レスポンスが送信済みかどうか。 yii\web\Response
$isServerError boolean このレスポンスがサーバーエラーを示しているかどうか。 yii\web\Response
$isSuccessful boolean このレスポンスが成功かどうか。 yii\web\Response
$statusCode integer レスポンスとともに送信するHTTPステータスコード。 yii\web\Response
$statusCodeByException Throwable 例外オブジェクト。 yii\web\Response
$statusText string ステータスコードとともに表示されるHTTPステータス説明。 yii\web\Response
$stream resource|array|callable 送信されるストリーム。 yii\web\Response
$version string|null 使用するHTTPプロトコルのバージョン。 yii\web\Response

公開メソッド

継承されたメソッドを非表示

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\Component
__clone() このメソッドは、既存のオブジェクトをクローンしてオブジェクトが作成された後に呼び出されます。 yii\base\Component
__construct() コンストラクタ。 yii\base\BaseObject
__get() コンポーネントプロパティの値を返します。 yii\base\Component
__isset() プロパティが設定されているかどうか(つまり、定義されていてnullではないかどうか)を確認します。 yii\base\Component
__set() コンポーネントプロパティの値を設定します。 yii\base\Component
__unset() コンポーネントプロパティをnullに設定します。 yii\base\Component
attachBehavior() このコンポーネントに動作をアタッチします。 yii\base\Component
attachBehaviors() コンポーネントに動作のリストをアタッチします。 yii\base\Component
behaviors() このコンポーネントが動作するべき動作のリストを返します。 yii\base\Component
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\Component
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\Component
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
clear() レスポンスのヘッダー、Cookie、コンテンツ、ステータスコードをクリアします。 yii\web\Response
clearOutputBuffers() 既存の出力バッファーをすべて削除します。 yii\base\Response
detachBehavior() コンポーネントから動作をデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべての動作をデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言された動作がこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getBehavior() 名前付きの動作オブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされたすべての動作を返します。 yii\base\Component
getCookies() Cookieコレクションを返します。 yii\web\Response
getHeaders() ヘッダーコレクションを返します。 yii\web\Response
getIsClientError() yii\web\Response
getIsEmpty() yii\web\Response
getIsForbidden() yii\web\Response
getIsInformational() yii\web\Response
getIsInvalid() yii\web\Response
getIsNotFound() yii\web\Response
getIsOk() yii\web\Response
getIsRedirection() yii\web\Response
getIsServerError() yii\web\Response
getIsSuccessful() yii\web\Response
getStatusCode() yii\web\Response
hasEventHandlers() 名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() このコンポーネントを初期化します。 yii\web\Response
off() このコンポーネントから既存のイベントハンドラーをデタッチします。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
redirect() ブラウザを指定されたURLにリダイレクトします。 yii\web\Response
refresh() 現在のページをリフレッシュします。 yii\web\Response
send() クライアントにレスポンスを送信します。 yii\web\Response
sendContentAsFile() 指定されたコンテンツをファイルとしてブラウザに送信します。 yii\web\Response
sendFile() ファイルをブラウザに送信します。 yii\web\Response
sendStreamAsFile() 指定されたストリームをファイルとしてブラウザに送信します。 yii\web\Response
setDownloadHeaders() ファイルダウンロードのためのデフォルトのHTTPヘッダーを設定します。 yii\web\Response
setStatusCode() レスポンスのステータスコードを設定します。 yii\web\Response
setStatusCodeByException() 例外に基づいてレスポンスのステータスコードを設定します。 yii\web\Response
trigger() イベントをトリガーします。 yii\base\Component
xSendFile() x-sendfile を使用して既存のファイルをブラウザにダウンロードとして送信します。 yii\web\Response

保護されたメソッド

継承されたメソッドを非表示

メソッド 説明 定義元
defaultFormatters() yii\web\Response
getDispositionHeaderValue() 古いブラウザと新しいブラウザの両方で安全に使用できるContent-Dispositionヘッダー値を返します。 yii\web\Response
getHttpRange() リクエストで指定されたHTTP範囲を判別します。 yii\web\Response
prepare() レスポンスの送信の準備をします。 yii\web\Response
sendContent() レスポンスのコンテンツをクライアントに送信します。 yii\web\Response
sendCookies() クッキーをクライアントに送信します。 yii\web\Response
sendHeaders() レスポンスヘッダーをクライアントに送信します。 yii\web\Response

イベント

継承されたイベントを非表示

イベント 説明 定義元
EVENT_AFTER_PREPARE yii\base\Event prepare()send() で呼び出された直後にトリガーされるイベントです。 yii\web\Response
EVENT_AFTER_SEND yii\base\Event send() の最後にトリガーされるイベントです。 yii\web\Response
EVENT_BEFORE_SEND yii\base\Event send() の最初にトリガーされるイベントです。 yii\web\Response

定数

継承された定数を非表示

定数 説明 定義元
FORMAT_HTML 'html' yii\web\Response
FORMAT_JSON 'json' yii\web\Response
FORMAT_JSONP 'jsonp' yii\web\Response
FORMAT_RAW 'raw' yii\web\Response
FORMAT_XML 'xml' yii\web\Response

プロパティの詳細

継承されたプロパティを非表示

$acceptMimeType public property

リクエストのACCEPTヘッダーからこのレスポンスのために選択されたMIMEタイプ(例:`application/json`)。このプロパティは主にyii\filters\ContentNegotiatorによって設定されます。

public string $acceptMimeType null
$acceptParams public property

選択されたMIMEタイプに関連付けられたパラメーター(例:`['q' => 1, 'version' => '1.0']`)。これは、ACCEPT HTTPヘッダーからの$acceptMimeTypeに関連付けられた名前と値のペアのリストです。このプロパティは主にyii\filters\ContentNegotiatorによって設定されます。

public array $acceptParams = []
$charset public property

テキストレスポンスの文字セット。設定されていない場合、yii\web\Application::$charsetの値が使用されます。

public string|null $charset null
$content public property

$data がnullでない場合、レスポンスが送信されるときに$formatに従って$contentに変換されます。

$dataも参照してください。

public string|null $content null
$cookies public property

Cookieコレクション。

$data public property

元のレスポンスデータ。これがnullでない場合、レスポンスが送信されるときに$formatに従って$contentに変換されます。

$contentも参照してください。

public mixed $data null
$downloadHeaders public property

添付ファイル名。

public string $downloadHeaders null
$format public property

レスポンスのフォーマット。これは、$contentが設定されていない場合に$dataをどのように$contentに変換するかを決定します。$formatters配列で宣言されているキーのいずれかである必要があります。デフォルトでは、次のフォーマットがサポートされています。

  • FORMAT_RAW:データは変換なしでレスポンスコンテンツとして扱われます。追加のHTTPヘッダーは追加されません。
  • FORMAT_HTML:データは変換なしでレスポンスコンテンツとして扱われます。"Content-Type"ヘッダーは"text/html"に設定されます。
  • FORMAT_JSON:データはJSON形式に変換され、"Content-Type"ヘッダーは"application/json"に設定されます。
  • FORMAT_JSONP:データはJSONP形式に変換され、"Content-Type"ヘッダーは"text/javascript"に設定されます。この場合、`$data`は"data"と"callback"の要素を持つ配列である必要があります。"data"は実際に送信されるデータを表し、"callback"はJavaScriptコールバックの名前を表します。
  • FORMAT_XML:データはXML形式に変換されます。詳細はyii\web\XmlResponseFormatterを参照してください。

$formattersを構成することで、フォーマット処理をカスタマイズしたり、追加のフォーマットをサポートしたりできます。

$formattersも参照してください。

public string $format self::FORMAT_HTML
$formatters public property

指定された$formatのレスポンスコンテンツにデータを変換するためのフォーマッタです。配列のキーはフォーマット名、配列の値はフォーマッタオブジェクトを作成するための対応する設定です。

参照

public array $formatters = []
$headers public property

ヘッダーコレクション。

$httpStatuses public static property

HTTPステータスコードと対応するテキストのリスト。

public static array $httpStatuses = [
    
100 => 'Continue',
    
101 => 'Switching Protocols',
    
102 => 'Processing',
    
118 => 'Connection timed out',
    
200 => 'OK',
    
201 => 'Created',
    
202 => 'Accepted',
    
203 => 'Non-Authoritative',
    
204 => 'No Content',
    
205 => 'Reset Content',
    
206 => 'Partial Content',
    
207 => 'Multi-Status',
    
208 => 'Already Reported',
    
210 => 'Content Different',
    
226 => 'IM Used',
    
300 => 'Multiple Choices',
    
301 => 'Moved Permanently',
    
302 => 'Found',
    
303 => 'See Other',
    
304 => 'Not Modified',
    
305 => 'Use Proxy',
    
306 => 'Reserved',
    
307 => 'Temporary Redirect',
    
308 => 'Permanent Redirect',
    
310 => 'Too many Redirect',
    
400 => 'Bad Request',
    
401 => 'Unauthorized',
    
402 => 'Payment Required',
    
403 => 'Forbidden',
    
404 => 'Not Found',
    
405 => 'Method Not Allowed',
    
406 => 'Not Acceptable',
    
407 => 'Proxy Authentication Required',
    
408 => 'Request Time-out',
    
409 => 'Conflict',
    
410 => 'Gone',
    
411 => 'Length Required',
    
412 => 'Precondition Failed',
    
413 => 'Request Entity Too Large',
    
414 => 'Request-URI Too Long',
    
415 => 'Unsupported Media Type',
    
416 => 'Requested range unsatisfiable',
    
417 => 'Expectation failed',
    
418 => 'I\'m a teapot',
    
421 => 'Misdirected Request',
    
422 => 'Unprocessable entity',
    
423 => 'Locked',
    
424 => 'Method failure',
    
425 => 'Unordered Collection',
    
426 => 'Upgrade Required',
    
428 => 'Precondition Required',
    
429 => 'Too Many Requests',
    
431 => 'Request Header Fields Too Large',
    
449 => 'Retry With',
    
450 => 'Blocked by Windows Parental Controls',
    
451 => 'Unavailable For Legal Reasons',
    
500 => 'Internal Server Error',
    
501 => 'Not Implemented',
    
502 => 'Bad Gateway or Proxy Error',
    
503 => 'Service Unavailable',
    
504 => 'Gateway Time-out',
    
505 => 'HTTP Version not supported',
    
507 => 'Insufficient storage',
    
508 => 'Loop Detected',
    
509 => 'Bandwidth Limit Exceeded',
    
510 => 'Not Extended',
    
511 => 'Network Authentication Required',
]
$isClientError パブリックプロパティ

このレスポンスがクライアントエラーを示しているかどうか。

public boolean $isClientError null
$isEmpty public property

このレスポンスが空かどうか。

public boolean $isEmpty null
$isForbidden public property

このレスポンスが現在のリクエストが禁止されていることを示しているかどうか。

public boolean $isForbidden null
$isInformational public property

このレスポンスが情報提供用かどうか。

public boolean $isInformational null
$isInvalid public property

このレスポンスに有効な$statusCodeがあるかどうか。

public boolean $isInvalid null
$isNotFound public property

このレスポンスが現在リクエストされたリソースが見つからないことを示しているかどうか。

public boolean $isNotFound null
$isOk public property

このレスポンスがOKかどうか。

public boolean $isOk null
$isRedirection public property

このレスポンスがリダイレクトかどうか。

public boolean $isRedirection null
$isSent public property

レスポンスが送信済みかどうかを示します。これがtrueの場合、send()を呼び出しても何も行われません。

public boolean $isSent false
$isServerError public property

このレスポンスがサーバーエラーを示しているかどうか。

public boolean $isServerError null
$isSuccessful public property

このレスポンスが成功かどうか。

public boolean $isSuccessful null
$statusCode public property

レスポンスとともに送信するHTTPステータスコード。

public integer $statusCode null
$statusCodeByException public property

例外オブジェクト。

$statusText public property

ステータスコードとともに表示されるHTTPステータス説明。

$httpStatusesも参照してください。

public string $statusText 'OK'
$stream public property

送信されるストリーム。これは、ストリームハンドル、またはストリームハンドル、開始位置、終了位置の配列にすることができます。あるいは、1つずつエコーしてフラッシュする必要がある文字列の配列を返す(またはyieldする)コールバック関数に設定することもできます。

このプロパティが設定されている場合、$data$contentのプロパティはsend()によって無視されることに注意してください。

$version public property

使用するHTTPプロトコルのバージョン。設定されていない場合、$_SERVER['SERVER_PROTOCOL']から取得されます。それも利用できない場合は'1.1'になります。

public string|null $version null

メソッドの詳細

継承されたメソッドを非表示

__call() public method

定義されている場所: yii\base\Component::__call()

クラスメソッドではない名前付きメソッドを呼び出します。

このメソッドは、アタッチされたビヘイビアに指定されたメソッドが存在するかどうかをチェックし、存在する場合は実行します。

これはPHPのマジックメソッドであり、未知のメソッドが呼び出されたときに暗黙的に呼び出されるため、直接呼び出さないでください。

public mixed __call ( $name, $params )
$name string

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 yii\base\UnknownMethodException

未知のメソッドを呼び出した場合

                public function __call($name, $params)
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $object) {
        if ($object->hasMethod($name)) {
            return call_user_func_array([$object, $name], $params);
        }
    }
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__clone() public method

定義されている場所: yii\base\Component::__clone()

このメソッドは、既存のオブジェクトをクローンしてオブジェクトが作成された後に呼び出されます。

古いオブジェクトにアタッチされているため、すべてのビヘイビアを削除します。

public void __clone ( )

                public function __clone()
{
    $this->_events = [];
    $this->_eventWildcards = [];
    $this->_behaviors = null;
}

            
__construct() public method

定義されている場所: yii\base\BaseObject::__construct()

コンストラクタ。

デフォルトの実装では、次の2つのことを行います。

  • 指定された設定$configを使用してオブジェクトを初期化します。
  • init()を呼び出します。

このメソッドを子クラスでオーバーライドする場合は、

  • コンストラクタの最後のパラメータが、ここにある$configのような設定配列であることをお勧めします。
  • コンストラクタの最後に親の実装を呼び出してください。
public void __construct ( $config = [] )
$config array

オブジェクトのプロパティを初期化するために使用される名前と値のペア

                public function __construct($config = [])
{
    if (!empty($config)) {
        Yii::configure($this, $config);
    }
    $this->init();
}

            
__get() public method

定義されている場所: yii\base\Component::__get()

コンポーネントプロパティの値を返します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • ゲッターによって定義されたプロパティ: ゲッターの結果を返す
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を返す

これはPHPのマジックメソッドであり、$value = $component->property;を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

こちらも参照してください __set().

public mixed __get ( $name )
$name string

プロパティ名

戻り値 mixed

プロパティ値またはビヘイビアのプロパティの値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが書き込み専用の場合。

                public function __get($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        // read property, e.g. getName()
        return $this->$getter();
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name;
        }
    }
    if (method_exists($this, 'set' . $name)) {
        throw new InvalidCallException('Getting write-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Getting unknown property: ' . get_class($this) . '::' . $name);
}

            
__isset() public method

定義されている場所: yii\base\Component::__isset()

プロパティが設定されているかどうか(つまり、定義されていてnullではないかどうか)を確認します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティが設定されているかどうかを返す
  • ビヘイビアのプロパティ: プロパティが設定されているかどうかを返す
  • 存在しないプロパティの場合はfalseを返す

これはPHPのマジックメソッドであり、isset($component->property)を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

こちらも参照してください https://www.php.net/manual/en/function.isset.php.

public boolean __isset ( $name )
$name string

プロパティ名またはイベント名

戻り値 boolean

指定されたプロパティが設定されているかどうか

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canGetProperty($name)) {
            return $behavior->$name !== null;
        }
    }
    return false;
}

            
__set() public method

定義されている場所: yii\base\Component::__set()

コンポーネントプロパティの値を設定します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値を設定する
  • "on xyz"形式のイベント: "xyz"イベントにハンドラーをアタッチする
  • "as xyz"形式のビヘイビア: "xyz"という名前のビヘイビアをアタッチする
  • ビヘイビアのプロパティ: ビヘイビアのプロパティ値を設定する

これはPHPのマジックメソッドであり、$component->property = $value;を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

こちらも参照してください __get().

public void __set ( $name, $value )
$name string

プロパティ名またはイベント名

$value mixed

プロパティ値

例外 yii\base\UnknownPropertyException

プロパティが定義されていない場合

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __set($name, $value)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        // set property
        $this->$setter($value);
        return;
    } elseif (strncmp($name, 'on ', 3) === 0) {
        // on event: attach event handler
        $this->on(trim(substr($name, 3)), $value);
        return;
    } elseif (strncmp($name, 'as ', 3) === 0) {
        // as behavior: attach behavior
        $name = trim(substr($name, 3));
        $this->attachBehavior($name, $value instanceof Behavior ? $value : Yii::createObject($value));
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = $value;
            return;
        }
    }
    if (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    }
    throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
}

            
__unset() public method

定義されている場所: yii\base\Component::__unset()

コンポーネントプロパティをnullに設定します。

このメソッドは、次の順序でチェックし、それに応じて動作します。

  • セッターによって定義されたプロパティ: プロパティ値をnullに設定する
  • ビヘイビアのプロパティ: プロパティ値をnullに設定する

これはPHPのマジックメソッドであり、unset($component->property)を実行したときに暗黙的に呼び出されるため、直接呼び出さないでください。

こちらも参照してください https://www.php.net/manual/en/function.unset.php.

public void __unset ( $name )
$name string

プロパティ名

例外 yii\base\InvalidCallException

プロパティが読み取り専用の場合。

                public function __unset($name)
{
    $setter = 'set' . $name;
    if (method_exists($this, $setter)) {
        $this->$setter(null);
        return;
    }
    // behavior property
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $behavior) {
        if ($behavior->canSetProperty($name)) {
            $behavior->$name = null;
            return;
        }
    }
    throw new InvalidCallException('Unsetting an unknown or read-only property: ' . get_class($this) . '::' . $name);
}

            
attachBehavior() public method

定義されている場所: yii\base\Component::attachBehavior()

このコンポーネントに動作をアタッチします。

このメソッドは、指定された設定に基づいてビヘイビアオブジェクトを作成します。その後、yii\base\Behavior::attach()メソッドを呼び出すことで、ビヘイビアオブジェクトがこのコンポーネントにアタッチされます。

こちらも参照してください detachBehavior().

public yii\base\Behavior attachBehavior ( $name, $behavior )
$name string

ビヘイビアの名前。

$behavior string|array|yii\base\Behavior

ビヘイビアの設定。次のいずれかになります。

  • yii\base\Behaviorオブジェクト
  • ビヘイビアクラスを指定する文字列
  • ビヘイビアオブジェクトを作成するためにYii::createObject()に渡されるオブジェクト設定配列。
戻り値 yii\base\Behavior

ビヘイビアオブジェクト

                public function attachBehavior($name, $behavior)
{
    $this->ensureBehaviors();
    return $this->attachBehaviorInternal($name, $behavior);
}

            
attachBehaviors() publicメソッド

定義位置: yii\base\Component::attachBehaviors()

コンポーネントに動作のリストをアタッチします。

各ビヘイビアは名前でインデックスされ、yii\base\Behaviorオブジェクト、ビヘイビアクラスを指定する文字列、またはビヘイビア作成のためのコンフィグレーション配列である必要があります。

こちらも参照してください attachBehavior()

public void attachBehaviors ( $behaviors )
$behaviors array

コンポーネントにアタッチされるビヘイビアのリスト

                public function attachBehaviors($behaviors)
{
    $this->ensureBehaviors();
    foreach ($behaviors as $name => $behavior) {
        $this->attachBehaviorInternal($name, $behavior);
    }
}

            
behaviors() publicメソッド

定義位置: yii\base\Component::behaviors()

このコンポーネントが動作するべき動作のリストを返します。

子クラスはこのメソッドをオーバーライドして、そのクラスが振る舞うビヘイビアを指定できます。

このメソッドの戻り値は、ビヘイビア名でインデックスされたビヘイビアオブジェクトまたはコンフィグレーションの配列である必要があります。ビヘイビアコンフィグレーションは、ビヘイビアクラスを指定する文字列、または以下の構造の配列のいずれかです。

'behaviorName' => [
    'class' => 'BehaviorClass',
    'property1' => 'value1',
    'property2' => 'value2',
]

ビヘイビアクラスはyii\base\Behaviorを拡張する必要があることに注意してください。ビヘイビアは名前付きまたは匿名でアタッチできます。配列キーとして名前を使用した場合、この名前を使用して、getBehavior()でビヘイビアを取得したり、detachBehavior()でデタッチしたりできます。匿名ビヘイビアは取得またはデタッチできません。

このメソッドで宣言されたビヘイビアは、コンポーネントに自動的に(オンデマンドで)アタッチされます。

public array behaviors ( )
戻り値 array

ビヘイビアのコンフィグレーション。

                public function behaviors()
{
    return [];
}

            
canGetProperty() publicメソッド

定義位置: yii\base\Component::canGetProperty()

プロパティを読み取ることができるかどうかを示す値を返します。

プロパティは、以下の場合に読み取ることができます。

  • クラスに指定された名前と関連付けられたゲッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の読み取り可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

こちらも参照してください canSetProperty()

public boolean canGetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティを読み取ることができるかどうか

                public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canGetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
canSetProperty() publicメソッド

定義位置: yii\base\Component::canSetProperty()

プロパティを設定できるかどうかを示す値を返します。

プロパティは、以下の場合に書き込むことができます。

  • クラスに指定された名前と関連付けられたセッターメソッドがある場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに、指定された名前の書き込み可能なプロパティがある場合($checkBehaviorsがtrueの場合)。

こちらも参照してください canGetProperty()

public boolean canSetProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティを書き込むことができるかどうか

                public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
{
    if (method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->canSetProperty($name, $checkVars)) {
                return true;
            }
        }
    }
    return false;
}

            
className() public staticメソッド
2.0.14から非推奨。PHP >= 5.5では、代わりに::classを使用してください。

定義位置: yii\base\BaseObject::className()

このクラスの完全修飾名を返します。

public static string className ( )
戻り値 string

このクラスの完全修飾名。

                public static function className()
{
    return get_called_class();
}

            
clear() publicメソッド

レスポンスのヘッダー、Cookie、コンテンツ、ステータスコードをクリアします。

public void clear ( )

                public function clear()
{
    $this->_headers = null;
    $this->_cookies = null;
    $this->_statusCode = 200;
    $this->statusText = 'OK';
    $this->data = null;
    $this->stream = null;
    $this->content = null;
    $this->isSent = false;
}

            
clearOutputBuffers() publicメソッド

定義位置: yii\base\Response::clearOutputBuffers()

既存の出力バッファーをすべて削除します。

public void clearOutputBuffers ( )

                public function clearOutputBuffers()
{
    // the following manual level counting is to deal with zlib.output_compression set to On
    for ($level = ob_get_level(); $level > 0; --$level) {
        if (!@ob_end_clean()) {
            ob_clean();
        }
    }
}

            
defaultFormatters() protectedメソッド

protected array defaultFormatters ( )
戻り値 array

デフォルトでサポートされているフォーマッター

                protected function defaultFormatters()
{
    return [
        self::FORMAT_HTML => [
            'class' => 'yii\web\HtmlResponseFormatter',
        ],
        self::FORMAT_XML => [
            'class' => 'yii\web\XmlResponseFormatter',
        ],
        self::FORMAT_JSON => [
            'class' => 'yii\web\JsonResponseFormatter',
        ],
        self::FORMAT_JSONP => [
            'class' => 'yii\web\JsonResponseFormatter',
            'useJsonp' => true,
        ],
    ];
}

            
detachBehavior() publicメソッド

定義位置: yii\base\Component::detachBehavior()

コンポーネントから動作をデタッチします。

ビヘイビアのyii\base\Behavior::detach()メソッドが呼び出されます。

public yii\base\Behavior|null detachBehavior ( $name )
$name string

ビヘイビアの名前。

戻り値 yii\base\Behavior|null

デタッチされたビヘイビア。ビヘイビアが存在しない場合はNull。

                public function detachBehavior($name)
{
    $this->ensureBehaviors();
    if (isset($this->_behaviors[$name])) {
        $behavior = $this->_behaviors[$name];
        unset($this->_behaviors[$name]);
        $behavior->detach();
        return $behavior;
    }
    return null;
}

            
detachBehaviors() publicメソッド

定義位置: yii\base\Component::detachBehaviors()

コンポーネントからすべての動作をデタッチします。

公開メソッド `detachBehaviors()`

                public function detachBehaviors()
{
    $this->ensureBehaviors();
    foreach ($this->_behaviors as $name => $behavior) {
        $this->detachBehavior($name);
    }
}

            
ensureBehaviors() 公開メソッド

定義: yii\base\Component::ensureBehaviors()

behaviors()で宣言された動作がこのコンポーネントにアタッチされていることを確認します。

公開メソッド `ensureBehaviors()`

                public function ensureBehaviors()
{
    if ($this->_behaviors === null) {
        $this->_behaviors = [];
        foreach ($this->behaviors() as $name => $behavior) {
            $this->attachBehaviorInternal($name, $behavior);
        }
    }
}

            
getBehavior() 公開メソッド

定義: yii\base\Component::getBehavior()

名前付きの動作オブジェクトを返します。

公開メソッド `getBehavior()` ($name)
$name string

ビヘイビア名

戻り値 yii\base\Behavior|null

ビヘイビアオブジェクト、またはビヘイビアが存在しない場合はnull

                public function getBehavior($name)
{
    $this->ensureBehaviors();
    return isset($this->_behaviors[$name]) ? $this->_behaviors[$name] : null;
}

            
getBehaviors() 公開メソッド

定義: yii\base\Component::getBehaviors()

このコンポーネントにアタッチされたすべての動作を返します。

公開メソッド `getBehaviors()`
戻り値 yii\base\Behavior[]

このコンポーネントにアタッチされているビヘイビアのリスト

                public function getBehaviors()
{
    $this->ensureBehaviors();
    return $this->_behaviors;
}

            
getCookies() 公開メソッド

Cookieコレクションを返します。

返されたCookieコレクションを通して、次のようにCookieを追加または削除します。

// add a cookie
$response->cookies->add(new Cookie([
    'name' => $name,
    'value' => $value,
]);

// remove a cookie
$response->cookies->remove('name');
// alternatively
unset($response->cookies['name']);
公開メソッド `getCookies()`
戻り値 yii\web\CookieCollection

Cookieコレクション。

                public function getCookies()
{
    if ($this->_cookies === null) {
        $this->_cookies = new CookieCollection();
    }
    return $this->_cookies;
}

            
保護されたメソッド `getDispositionHeaderValue()` (バージョン2.0.10から利用可能)

古いブラウザと新しいブラウザの両方で安全に使用できるContent-Dispositionヘッダー値を返します。

フォールバック名

  • コードが32未満または126を超える非ASCII文字が含まれていると問題が発生します。
  • URLエンコードされた文字(`%`で始まる)または`%`文字が含まれていると問題が発生します。一部のブラウザは`filename="X"`をURLエンコードされた名前として解釈し、一部は解釈しません。
  • `\`または`/`などのパス区切り文字が含まれていると問題が発生します。
  • 値は`"`で囲まれているため、`\"`としてエスケープする必要があります。
  • 入力に非ASCII文字が含まれる可能性があるため、フォールバックは転写によって取得されます。

UTF名

  • `\`または`/`などのパス区切り文字が含まれていると問題が発生します。
  • ヘッダーはASCIIのみであるため、URLエンコードする必要があります。
  • フォールバック名と完全に一致する場合は省略できます。
保護されたメソッド `getDispositionHeaderValue()` ($disposition, $attachmentName)
$disposition string
$attachmentName string

                protected function getDispositionHeaderValue($disposition, $attachmentName)
{
    $fallbackName = str_replace(
        ['%', '/', '\\', '"', "\x7F"],
        ['_', '_', '_', '\\"', '_'],
        Inflector::transliterate($attachmentName, Inflector::TRANSLITERATE_LOOSE)
    );
    $utfName = rawurlencode(str_replace(['%', '/', '\\'], '', $attachmentName));
    $dispositionHeader = "{$disposition}; filename=\"{$fallbackName}\"";
    if ($utfName !== $fallbackName) {
        $dispositionHeader .= "; filename*=utf-8''{$utfName}";
    }
    return $dispositionHeader;
}

            
getHeaders() 公開メソッド

ヘッダーコレクションを返します。

ヘッダーコレクションには、現在登録されているHTTPヘッダーが含まれています。

公開メソッド `getHeaders()`
戻り値 yii\web\HeaderCollection

ヘッダーコレクション

                public function getHeaders()
{
    if ($this->_headers === null) {
        $this->_headers = new HeaderCollection();
    }
    return $this->_headers;
}

            
保護されたメソッド `getHttpRange()`

リクエストで指定されたHTTP範囲を判別します。

保護されたメソッド `getHttpRange()` ($fileSize)
$fileSize integer

要求されたHTTP範囲の検証に使用されるファイルのサイズ。

戻り値 配列|ブール値

範囲(開始、終了)、または範囲要求が無効な場合はfalse。

                protected function getHttpRange($fileSize)
{
    $rangeHeader = Yii::$app->getRequest()->getHeaders()->get('Range', '-');
    if ($rangeHeader === '-') {
        return [0, $fileSize - 1];
    }
    if (!preg_match('/^bytes=(\d*)-(\d*)$/', $rangeHeader, $matches)) {
        return false;
    }
    if ($matches[1] === '') {
        $start = $fileSize - $matches[2];
        $end = $fileSize - 1;
    } elseif ($matches[2] !== '') {
        $start = $matches[1];
        $end = $matches[2];
        if ($end >= $fileSize) {
            $end = $fileSize - 1;
        }
    } else {
        $start = $matches[1];
        $end = $fileSize - 1;
    }
    if ($start < 0 || $start > $end) {
        return false;
    }
    return [$start, $end];
}

            
getIsClientError() 公開メソッド

公開メソッド `getIsClientError()`
戻り値 boolean

このレスポンスがクライアントエラーを示しているかどうか

                public function getIsClientError()
{
    return $this->getStatusCode() >= 400 && $this->getStatusCode() < 500;
}

            
getIsEmpty() 公開メソッド

公開メソッド `getIsEmpty()`
戻り値 boolean

このレスポンスが空かどうか

                public function getIsEmpty()
{
    return in_array($this->getStatusCode(), [201, 204, 304]);
}

            
getIsForbidden() 公開メソッド

公開メソッド `getIsForbidden()`
戻り値 boolean

このレスポンスが現在の要求が禁止されていることを示しているかどうか

                public function getIsForbidden()
{
    return $this->getStatusCode() == 403;
}

            
getIsInformational() 公開メソッド

公開メソッド `getIsInformational()`
戻り値 boolean

このレスポンスが情報提供用かどうか

                public function getIsInformational()
{
    return $this->getStatusCode() >= 100 && $this->getStatusCode() < 200;
}

            
getIsInvalid() 公開メソッド

公開メソッド `getIsInvalid()`
戻り値 boolean

このレスポンスに有効な$statusCodeがあるかどうか。

                public function getIsInvalid()
{
    return $this->getStatusCode() < 100 || $this->getStatusCode() >= 600;
}

            
getIsNotFound() publicメソッド

public boolean getIsNotFound ( )
戻り値 boolean

現在要求されているリソースが見つからないことを示すレスポンスかどうか

                public function getIsNotFound()
{
    return $this->getStatusCode() == 404;
}

            
getIsOk() publicメソッド

public boolean getIsOk ( )
戻り値 boolean

このレスポンスが正常かどうか

                public function getIsOk()
{
    return $this->getStatusCode() == 200;
}

            
getIsRedirection() publicメソッド

public boolean getIsRedirection ( )
戻り値 boolean

このレスポンスがリダイレクトかどうか

                public function getIsRedirection()
{
    return $this->getStatusCode() >= 300 && $this->getStatusCode() < 400;
}

            
getIsServerError() publicメソッド

public boolean getIsServerError ( )
戻り値 boolean

このレスポンスがサーバーエラーを示しているかどうか

                public function getIsServerError()
{
    return $this->getStatusCode() >= 500 && $this->getStatusCode() < 600;
}

            
getIsSuccessful() publicメソッド

public boolean getIsSuccessful ( )
戻り値 boolean

このレスポンスが成功したかどうか

                public function getIsSuccessful()
{
    return $this->getStatusCode() >= 200 && $this->getStatusCode() < 300;
}

            
getStatusCode() publicメソッド

public integer getStatusCode ( )
戻り値 integer

レスポンスとともに送信するHTTPステータスコード。

                public function getStatusCode()
{
    return $this->_statusCode;
}

            
hasEventHandlers() publicメソッド

定義されている場所: yii\base\Component::hasEventHandlers()

名前付きイベントにアタッチされたハンドラーがあるかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

戻り値 boolean

イベントにハンドラーがアタッチされているかどうか。

                public function hasEventHandlers($name)
{
    $this->ensureBehaviors();
    if (!empty($this->_events[$name])) {
        return true;
    }
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (!empty($handlers) && StringHelper::matchWildcard($wildcard, $name)) {
            return true;
        }
    }
    return Event::hasHandlers($this, $name);
}

            
hasMethod() publicメソッド

定義されている場所: yii\base\Component::hasMethod()

メソッドが定義されているかどうかを示す値を返します。

メソッドが定義されている場合

  • そのクラスに指定された名前のメソッドが存在する場合
  • アタッチされたビヘイビアに指定された名前のメソッドが存在する場合(`$checkBehaviors` が true の場合)。
public boolean hasMethod ( $name, $checkBehaviors true )
$name string

プロパティ名

$checkBehaviors boolean

ビヘイビアのメソッドをこのコンポーネントのメソッドとして扱うかどうか

戻り値 boolean

メソッドが定義されているかどうか

                public function hasMethod($name, $checkBehaviors = true)
{
    if (method_exists($this, $name)) {
        return true;
    } elseif ($checkBehaviors) {
        $this->ensureBehaviors();
        foreach ($this->_behaviors as $behavior) {
            if ($behavior->hasMethod($name)) {
                return true;
            }
        }
    }
    return false;
}

            
hasProperty() publicメソッド

定義されている場所: yii\base\Component::hasProperty()

このコンポーネントにプロパティが定義されているかどうかを示す値を返します。

プロパティが定義されている場合

  • そのクラスに、指定された名前と関連付けられたゲッターまたはセッターメソッドが存在する場合(この場合、プロパティ名はケースインセンシティブです)。
  • クラスに指定された名前のメンバ変数がある場合($checkVarsがtrueの場合)。
  • アタッチされたビヘイビアに指定された名前のプロパティが存在する場合(`$checkBehaviors` が true の場合)。

参照

public boolean hasProperty ( $name, $checkVars true, $checkBehaviors true )
$name string

プロパティ名

$checkVars boolean

メンバ変数をプロパティとして扱うかどうか

$checkBehaviors boolean

ビヘイビアのプロパティをこのコンポーネントのプロパティとして扱うかどうか

戻り値 boolean

プロパティが定義されているかどうか

                public function hasProperty($name, $checkVars = true, $checkBehaviors = true)
{
    return $this->canGetProperty($name, $checkVars, $checkBehaviors) || $this->canSetProperty($name, false, $checkBehaviors);
}

            
init() publicメソッド

このコンポーネントを初期化します。

public void init ( )

                public function init()
{
    if ($this->version === null) {
        if (isset($_SERVER['SERVER_PROTOCOL']) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.0') {
            $this->version = '1.0';
        } else {
            $this->version = '1.1';
        }
    }
    if ($this->charset === null) {
        $this->charset = Yii::$app->charset;
    }
    $this->formatters = array_merge($this->defaultFormatters(), $this->formatters);
}

            
off() publicメソッド

定義されている場所: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーをデタッチします。

このメソッドは、on() の逆です。

注:イベント名にワイルドカードパターンが渡された場合、このワイルドカードで登録されたハンドラーのみが削除され、このワイルドカードに一致するプレーン名で登録されたハンドラーは残ります。

on() も参照してください。

public boolean off ( $name, $handler null )
$name string

イベント名

$handler callable|null

削除するイベントハンドラー。null の場合、指定されたイベントにアタッチされているすべてのハンドラーが削除されます。

戻り値 boolean

ハンドラーが見つかり、デタッチされた場合

                public function off($name, $handler = null)
{
    $this->ensureBehaviors();
    if (empty($this->_events[$name]) && empty($this->_eventWildcards[$name])) {
        return false;
    }
    if ($handler === null) {
        unset($this->_events[$name], $this->_eventWildcards[$name]);
        return true;
    }
    $removed = false;
    // plain event names
    if (isset($this->_events[$name])) {
        foreach ($this->_events[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_events[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_events[$name] = array_values($this->_events[$name]);
            return true;
        }
    }
    // wildcard event names
    if (isset($this->_eventWildcards[$name])) {
        foreach ($this->_eventWildcards[$name] as $i => $event) {
            if ($event[0] === $handler) {
                unset($this->_eventWildcards[$name][$i]);
                $removed = true;
            }
        }
        if ($removed) {
            $this->_eventWildcards[$name] = array_values($this->_eventWildcards[$name]);
            // remove empty wildcards to save future redundant regex checks:
            if (empty($this->_eventWildcards[$name])) {
                unset($this->_eventWildcards[$name]);
            }
        }
    }
    return $removed;
}

            
on() publicメソッド

定義されている場所: yii\base\Component::on()

イベントにイベントハンドラーをアタッチします。

イベントハンドラーは、有効なPHPコールバックである必要があります。いくつかの例を以下に示します。

function ($event) { ... }         // anonymous function
[$object, 'handleClick']          // $object->handleClick()
['Page', 'handleClick']           // Page::handleClick()
'handleClick'                     // global function handleClick()

イベントハンドラーは、次のシグネチャで定義する必要があります。

function ($event)

ここで、`$event` は、イベントに関連付けられたパラメーターを含む yii\base\Event オブジェクトです。

2.0.14以降、イベント名をワイルドカードパターンとして指定できます。

$component->on('event.group.*', function ($event) {
    Yii::trace($event->name . ' is triggered.');
});

off() も参照してください。

public void on ( $name, $handler, $data null, $append true )
$name string

イベント名

$handler callable

イベントハンドラー

$data mixed

イベントが発生したときにイベントハンドラーに渡されるデータ。イベントハンドラーが呼び出されると、このデータは yii\base\Event::$data を介してアクセスできます。

$append boolean

新しいイベントハンドラーを既存のハンドラーリストの最後に追加するかどうか。false の場合、新しいハンドラーは既存のハンドラーリストの先頭に挿入されます。

                public function on($name, $handler, $data = null, $append = true)
{
    $this->ensureBehaviors();
    if (strpos($name, '*') !== false) {
        if ($append || empty($this->_eventWildcards[$name])) {
            $this->_eventWildcards[$name][] = [$handler, $data];
        } else {
            array_unshift($this->_eventWildcards[$name], [$handler, $data]);
        }
        return;
    }
    if ($append || empty($this->_events[$name])) {
        $this->_events[$name][] = [$handler, $data];
    } else {
        array_unshift($this->_events[$name], [$handler, $data]);
    }
}

            
prepare() protected メソッド

レスポンスの送信の準備をします。

デフォルトの実装では、$data$content に変換し、それに応じてヘッダーを設定します。

参照

protected void prepare ( )
例外 yii\base\InvalidConfigException

指定されたフォーマットのフォーマッターが無効である場合、または$format がサポートされていない場合

                protected function prepare()
{
    if (in_array($this->getStatusCode(), [204, 304])) {
        // A 204/304 response cannot contain a message body according to rfc7231/rfc7232
        $this->content = '';
        $this->stream = null;
        return;
    }
    if ($this->stream !== null) {
        return;
    }
    if (isset($this->formatters[$this->format])) {
        $formatter = $this->formatters[$this->format];
        if (!is_object($formatter)) {
            $this->formatters[$this->format] = $formatter = Yii::createObject($formatter);
        }
        if ($formatter instanceof ResponseFormatterInterface) {
            $formatter->format($this);
        } else {
            throw new InvalidConfigException("The '{$this->format}' response formatter is invalid. It must implement the ResponseFormatterInterface.");
        }
    } elseif ($this->format === self::FORMAT_RAW) {
        if ($this->data !== null) {
            $this->content = $this->data;
        }
    } else {
        throw new InvalidConfigException("Unsupported response format: {$this->format}");
    }
    if (is_array($this->content)) {
        throw new InvalidArgumentException('Response content must not be an array.');
    } elseif (is_object($this->content)) {
        if (method_exists($this->content, '__toString')) {
            $this->content = $this->content->__toString();
        } else {
            throw new InvalidArgumentException('Response content must be a string or an object implementing __toString().');
        }
    }
}

            
redirect() public メソッド

ブラウザを指定されたURLにリダイレクトします。

このメソッドは、現在のレスポンスに "Location" ヘッダーを追加します。send() が呼び出されるまで、ヘッダーは送信されません。コントローラーアクションでは、このメソッドを次のように使用できます。

return Yii::$app->getResponse()->redirect($url);

"Location" ヘッダーをすぐに送信する必要がある場合は、他の場所では次のコードを使用してください。

Yii::$app->getResponse()->redirect($url)->send();
return;

AJAX モードでは、クライアント側のJavaScriptコードでリダイレクトを処理していない限り、通常は期待通りに動作しません。この目標を達成するために、このメソッドは "Location" の代わりに "X-Redirect" ヘッダーを送信します。

"yii" JavaScriptモジュールを使用している場合は、上記のようにAJAXリダイレクトを処理します。それ以外の場合は、リダイレクトを処理するために次のJavaScriptコードを記述する必要があります。

$document.ajaxComplete(function (event, xhr, settings) {
    var url = xhr && xhr.getResponseHeader('X-Redirect');
    if (url) {
        window.location = url;
    }
});
public $this redirect ( $url, $statusCode 302, $checkAjax true )
$url string|array

リダイレクト先のURL。次のいずれかの形式で指定できます。

  • URLを表す文字列(例:"https://example.com")
  • URLエイリアスを表す文字列(例:"@example.com")
  • [$route, ...name-value pairs...] の形式の配列(例:['site/index', 'ref' => 1])。ルートは、コントローラーやモジュールではなく、アプリケーション全体を基準としたものです。yii\helpers\Url::to() を使用して配列をURLに変換します。

スラッシュ "/" で始まる相対URLは、現在のリクエストのホスト情報が付加されて絶対URLに変換されます。

$statusCode integer

HTTPステータスコード。デフォルトは302です。HTTPステータスコードの詳細については、https://tools.ietf.org/html/rfc2616#section-10 を参照してください。

$checkAjax boolean

AJAX(およびPJAX)リクエストを特別に処理するかどうか。デフォルトはtrueで、現在のリクエストがAJAXまたはPJAXリクエストの場合、このメソッドを呼び出すと、ブラウザが指定されたURLにリダイレクトされます。falseの場合、「Location」ヘッダーが送信され、AJAX/PJAXレスポンスとして受信された場合、ブラウザのリダイレクトが行われない場合があります。リクエストヘッダーの`X-Ie-Redirect-Compatibility`が存在しない場合にのみ有効です。

戻り値 $this

レスポンスオブジェクト自体

                public function redirect($url, $statusCode = 302, $checkAjax = true)
{
    if (is_array($url) && isset($url[0])) {
        // ensure the route is absolute
        $url[0] = '/' . ltrim($url[0], '/');
    }
    $request = Yii::$app->getRequest();
    $normalizedUrl = Url::to($url);
    if ($normalizedUrl !== null) {
        if (preg_match('/\n/', $normalizedUrl)) {
            throw new InvalidRouteException('Route with new line character detected "' . $normalizedUrl . '".');
        }
        if (strncmp($normalizedUrl, '/', 1) === 0 && strncmp($normalizedUrl, '//', 2) !== 0) {
            $normalizedUrl = $request->getHostInfo() . $normalizedUrl;
        }
    }
    if ($checkAjax && $request->getIsAjax()) {
        if (
            in_array($statusCode, [301, 302])
            && preg_match('/Trident\/|MSIE /', (string)$request->userAgent)
        ) {
            $statusCode = 200;
        }
        if ($request->getIsPjax()) {
            $this->getHeaders()->set('X-Pjax-Url', $normalizedUrl);
        } else {
            $this->getHeaders()->set('X-Redirect', $normalizedUrl);
        }
    } else {
        $this->getHeaders()->set('Location', $normalizedUrl);
    }
    $this->setStatusCode($statusCode);
    return $this;
}

            
refresh() public メソッド

現在のページをリフレッシュします。

このメソッド呼び出しの効果は、ユーザーがブラウザの更新ボタンを押した場合と同じです(データの再送信はありません)。

コントローラーアクションでは、このメソッドを次のように使用できます。

return Yii::$app->getResponse()->refresh();
public yii\web\Response refresh ( $anchor '' )
$anchor string

リダイレクトURLに追加するアンカー。デフォルトは空です。指定する場合は、アンカーが「#」で始まることを確認してください。

戻り値 yii\web\Response

レスポンスオブジェクト自体

                public function refresh($anchor = '')
{
    return $this->redirect(Yii::$app->getRequest()->getUrl() . $anchor);
}

            
send() public メソッド

クライアントにレスポンスを送信します。

public void send ( )

                public function send()
{
    if ($this->isSent) {
        return;
    }
    $this->trigger(self::EVENT_BEFORE_SEND);
    $this->prepare();
    $this->trigger(self::EVENT_AFTER_PREPARE);
    $this->sendHeaders();
    $this->sendContent();
    $this->trigger(self::EVENT_AFTER_SEND);
    $this->isSent = true;
}

            
sendContent() protected メソッド

レスポンスのコンテンツをクライアントに送信します。

protected void sendContent ( )

                protected function sendContent()
{
    if ($this->stream === null) {
        echo $this->content;
        return;
    }
    // Try to reset time limit for big files
    if (!function_exists('set_time_limit') || !@set_time_limit(0)) {
        Yii::warning('set_time_limit() is not available', __METHOD__);
    }
    if (is_callable($this->stream)) {
        $data = call_user_func($this->stream);
        foreach ($data as $datum) {
            echo $datum;
            flush();
        }
        return;
    }
    $chunkSize = 8 * 1024 * 1024; // 8MB per chunk
    if (is_array($this->stream)) {
        list($handle, $begin, $end) = $this->stream;
        // only seek if stream is seekable
        if ($this->isSeekable($handle)) {
            fseek($handle, $begin);
        }
        while (!feof($handle) && ($pos = ftell($handle)) <= $end) {
            if ($pos + $chunkSize > $end) {
                $chunkSize = $end - $pos + 1;
            }
            echo fread($handle, $chunkSize);
            flush(); // Free up memory. Otherwise large files will trigger PHP's memory limit.
        }
        fclose($handle);
    } else {
        while (!feof($this->stream)) {
            echo fread($this->stream, $chunkSize);
            flush();
        }
        fclose($this->stream);
    }
}

            
sendContentAsFile() public メソッド

指定されたコンテンツをファイルとしてブラウザに送信します。

このメソッドは、ファイル送信のためのレスポンスを準備するだけです。ファイルは、send() が明示的または暗黙的に呼び出されるまで送信されません。後者は、コントローラーアクションから戻った後に実行されます。

例としてsendFile() も参照してください。

public $this sendContentAsFile ( $content, $attachmentName, $options = [] )
$content string

送信するコンテンツ。既存の$content は破棄されます。

$attachmentName string

ユーザーに表示されるファイル名。

$options array

ファイル送信のための追加オプション。次のオプションがサポートされています。

  • mimeType: コンテンツのMIMEタイプ。デフォルトは 'application/octet-stream' です。
  • inline: ブール値。ブラウザがブラウザウィンドウ内でファイルを開くかどうか。デフォルトはfalseで、ダウンロードダイアログが表示されます。
戻り値 $this

レスポンスオブジェクト自体

例外 yii\web\RangeNotSatisfiableHttpException

要求された範囲が満たせない場合

                public function sendContentAsFile($content, $attachmentName, $options = [])
{
    $headers = $this->getHeaders();
    $contentLength = StringHelper::byteLength($content);
    $range = $this->getHttpRange($contentLength);
    if ($range === false) {
        $headers->set('Content-Range', "bytes */$contentLength");
        throw new RangeNotSatisfiableHttpException();
    }
    list($begin, $end) = $range;
    if ($begin != 0 || $end != $contentLength - 1) {
        $this->setStatusCode(206);
        $headers->set('Content-Range', "bytes $begin-$end/$contentLength");
        $this->content = StringHelper::byteSubstr($content, $begin, $end - $begin + 1);
    } else {
        $this->setStatusCode(200);
        $this->content = $content;
    }
    $mimeType = isset($options['mimeType']) ? $options['mimeType'] : 'application/octet-stream';
    $this->setDownloadHeaders($attachmentName, $mimeType, !empty($options['inline']), $end - $begin + 1);
    $this->format = self::FORMAT_RAW;
    return $this;
}

            
sendCookies() protected メソッド

クッキーをクライアントに送信します。

protected void sendCookies ( )

                protected function sendCookies()
{
    if ($this->_cookies === null) {
        return;
    }
    $request = Yii::$app->getRequest();
    if ($request->enableCookieValidation) {
        if ($request->cookieValidationKey == '') {
            throw new InvalidConfigException(get_class($request) . '::cookieValidationKey must be configured with a secret key.');
        }
        $validationKey = $request->cookieValidationKey;
    }
    foreach ($this->getCookies() as $cookie) {
        $value = $cookie->value;
        $expire = $cookie->expire;
        if (is_string($expire)) {
            $expire = strtotime($expire);
        } elseif (interface_exists('\\DateTimeInterface') && $expire instanceof \DateTimeInterface) {
            $expire = $expire->getTimestamp();
        }
        if ($expire === null || $expire === false) {
            $expire = 0;
        }
        if ($expire != 1 && isset($validationKey)) {
            $value = Yii::$app->getSecurity()->hashData(serialize([$cookie->name, $value]), $validationKey);
        }
        if (PHP_VERSION_ID >= 70300) {
            setcookie($cookie->name, $value, [
                'expires' => $expire,
                'path' => $cookie->path,
                'domain' => $cookie->domain,
                'secure' => $cookie->secure,
                'httpOnly' => $cookie->httpOnly,
                'sameSite' => !empty($cookie->sameSite) ? $cookie->sameSite : null,
            ]);
        } else {
            // Work around for setting sameSite cookie prior PHP 7.3
            // https://stackoverflow.com/questions/39750906/php-setcookie-samesite-strict/46971326#46971326
            $cookiePath = $cookie->path;
            if (!is_null($cookie->sameSite)) {
                $cookiePath .= '; samesite=' . $cookie->sameSite;
            }
            setcookie($cookie->name, $value, $expire, $cookiePath, $cookie->domain, $cookie->secure, $cookie->httpOnly);
        }
    }
}

            
sendFile() public メソッド

ファイルをブラウザに送信します。

このメソッドは、ファイル送信のためのレスポンスを準備するだけです。ファイルは、send() が明示的または暗黙的に呼び出されるまで送信されません。後者は、コントローラーアクションから戻った後に実行されます。

以下は、Webからアクセスできないディレクトリからファイルの要求を許可するコントローラーアクションの実装例です。

public function actionFile($filename)
{
    $storagePath = Yii::getAlias('@app/files');

    // check filename for allowed chars (do not allow ../ to avoid security issue: downloading arbitrary files)
    if (!preg_match('/^[a-z0-9]+\.[a-z0-9]+$/i', $filename) || !is_file("$storagePath/$filename")) {
        throw new \yii\web\NotFoundHttpException('The file does not exists.');
    }
    return Yii::$app->response->sendFile("$storagePath/$filename", $filename);
}

参照

public $this sendFile ( $filePath, $attachmentName null, $options = [] )
$filePath string

送信するファイルのパス。

$attachmentName string|null

ユーザーに表示されるファイル名。nullの場合、`$filePath`から決定されます。

$options array

ファイル送信のための追加オプション。次のオプションがサポートされています。

  • mimeType: コンテンツのMIMEタイプ。設定されていない場合、`$filePath`に基づいて推測されます。
  • inline: ブール値。ブラウザがブラウザウィンドウ内でファイルを開くかどうか。デフォルトはfalseで、ダウンロードダイアログが表示されます。
戻り値 $this

レスポンスオブジェクト自体

                public function sendFile($filePath, $attachmentName = null, $options = [])
{
    if (!isset($options['mimeType'])) {
        $options['mimeType'] = FileHelper::getMimeTypeByExtension($filePath);
    }
    if ($attachmentName === null) {
        $attachmentName = basename($filePath);
    }
    $handle = fopen($filePath, 'rb');
    $this->sendStreamAsFile($handle, $attachmentName, $options);
    return $this;
}

            
sendHeaders() protected メソッド

レスポンスヘッダーをクライアントに送信します。

protected void sendHeaders ( )

                protected function sendHeaders()
{
    if (headers_sent($file, $line)) {
        throw new HeadersAlreadySentException($file, $line);
    }
    if ($this->_headers) {
        foreach ($this->getHeaders() as $name => $values) {
            $name = str_replace(' ', '-', ucwords(str_replace('-', ' ', $name)));
            // set replace for first occurrence of header but false afterwards to allow multiple
            $replace = true;
            foreach ($values as $value) {
                header("$name: $value", $replace);
                $replace = false;
            }
        }
    }
    $statusCode = $this->getStatusCode();
    header("HTTP/{$this->version} {$statusCode} {$this->statusText}");
    $this->sendCookies();
}

            
sendStreamAsFile() publicメソッド

指定されたストリームをファイルとしてブラウザに送信します。

このメソッドは、ファイル送信のためのレスポンスを準備するだけです。ファイルは、send() が明示的または暗黙的に呼び出されるまで送信されません。後者は、コントローラーアクションから戻った後に実行されます。

例としてsendFile() も参照してください。

public $this sendStreamAsFile ( $handle, $attachmentName, $options = [] )
$handle リソース

送信するストリームのハンドル。

$attachmentName string

ユーザーに表示されるファイル名。

$options array

ファイル送信のための追加オプション。次のオプションがサポートされています。

  • mimeType: コンテンツのMIMEタイプ。デフォルトは 'application/octet-stream' です。
  • inline: ブール値。ブラウザがブラウザウィンドウ内でファイルを開くかどうか。デフォルトはfalseで、ダウンロードダイアログが表示されます。
  • fileSize: ストリーム送信するコンテンツのサイズ。コンテンツのサイズが既知で、コンテンツがシーク可能でない場合に便利です。デフォルトではftell()を使用してコンテンツサイズを使用します。このオプションはバージョン2.0.4から利用可能です。
戻り値 $this

レスポンスオブジェクト自体

例外 yii\web\RangeNotSatisfiableHttpException

要求された範囲が満たせない場合

                public function sendStreamAsFile($handle, $attachmentName, $options = [])
{
    $headers = $this->getHeaders();
    if (isset($options['fileSize'])) {
        $fileSize = $options['fileSize'];
    } else {
        if ($this->isSeekable($handle)) {
            fseek($handle, 0, SEEK_END);
            $fileSize = ftell($handle);
        } else {
            $fileSize = 0;
        }
    }
    $range = $this->getHttpRange($fileSize);
    if ($range === false) {
        $headers->set('Content-Range', "bytes */$fileSize");
        throw new RangeNotSatisfiableHttpException();
    }
    list($begin, $end) = $range;
    if ($begin != 0 || $end != $fileSize - 1) {
        $this->setStatusCode(206);
        $headers->set('Content-Range', "bytes $begin-$end/$fileSize");
    } else {
        $this->setStatusCode(200);
    }
    $mimeType = isset($options['mimeType']) ? $options['mimeType'] : 'application/octet-stream';
    $this->setDownloadHeaders($attachmentName, $mimeType, !empty($options['inline']), $end - $begin + 1);
    $this->format = self::FORMAT_RAW;
    $this->stream = [$handle, $begin, $end];
    return $this;
}

            
setDownloadHeaders() publicメソッド

ファイルダウンロードのためのデフォルトのHTTPヘッダーを設定します。

public $this setDownloadHeaders ( $attachmentName, $mimeType null, $inline false, $contentLength null )
$attachmentName string

添付ファイル名

$mimeType string|null

レスポンスのMIMEタイプ。nullの場合、Content-Typeヘッダーは設定されません。

$inline boolean

ブラウザがファイルを開くかどうかを指定します。デフォルトはfalseで、ダウンロードダイアログが表示されます。

$contentLength integer|null

ダウンロードされるファイルのバイト長。nullの場合、Content-Lengthヘッダーは設定されません。

戻り値 $this

レスポンスオブジェクト自体

                public function setDownloadHeaders($attachmentName, $mimeType = null, $inline = false, $contentLength = null)
{
    $headers = $this->getHeaders();
    $disposition = $inline ? 'inline' : 'attachment';
    $headers->setDefault('Pragma', 'public')
        ->setDefault('Accept-Ranges', 'bytes')
        ->setDefault('Expires', '0')
        ->setDefault('Cache-Control', 'must-revalidate, post-check=0, pre-check=0')
        ->setDefault('Content-Disposition', $this->getDispositionHeaderValue($disposition, $attachmentName));
    if ($mimeType !== null) {
        $headers->setDefault('Content-Type', $mimeType);
    }
    if ($contentLength !== null) {
        $headers->setDefault('Content-Length', $contentLength);
    }
    return $this;
}

            
setStatusCode() publicメソッド

レスポンスのステータスコードを設定します。

このメソッドは、$textがnullの場合、対応するステータステキストを設定します。

public $this setStatusCode ( $value, $text null )
$value integer

ステータスコード

$text string|null

ステータステキスト。設定されていない場合、ステータスコードに基づいて自動的に設定されます。

戻り値 $this

レスポンスオブジェクト自体

例外 yii\base\InvalidArgumentException

ステータスコードが無効な場合。

                public function setStatusCode($value, $text = null)
{
    if ($value === null) {
        $value = 200;
    }
    $this->_statusCode = (int) $value;
    if ($this->getIsInvalid()) {
        throw new InvalidArgumentException("The HTTP status code is invalid: $value");
    }
    if ($text === null) {
        $this->statusText = isset(static::$httpStatuses[$this->_statusCode]) ? static::$httpStatuses[$this->_statusCode] : '';
    } else {
        $this->statusText = $text;
    }
    return $this;
}

            
setStatusCodeByException() publicメソッド (バージョン2.0.12から利用可能)

例外に基づいてレスポンスのステータスコードを設定します。

public $this setStatusCodeByException ( $e )
$e Throwable

例外オブジェクト。

戻り値 $this

レスポンスオブジェクト自体

例外 yii\base\InvalidArgumentException

ステータスコードが無効な場合。

                public function setStatusCodeByException($e)
{
    if ($e instanceof HttpException) {
        $this->setStatusCode($e->statusCode);
    } else {
        $this->setStatusCode(500);
    }
    return $this;
}

            
trigger() publicメソッド

定義されている場所: yii\base\Component::trigger()

イベントをトリガーします。

このメソッドはイベントの発生を表します。クラスレベルのハンドラを含む、イベントにアタッチされているすべてのハンドラを呼び出します。

public void trigger ( $name, yii\base\Event $event null )
$name string

イベント名

$event yii\base\Event|null

イベントインスタンス。設定されていない場合、デフォルトのyii\base\Eventオブジェクトが作成されます。

                public function trigger($name, Event $event = null)
{
    $this->ensureBehaviors();
    $eventHandlers = [];
    foreach ($this->_eventWildcards as $wildcard => $handlers) {
        if (StringHelper::matchWildcard($wildcard, $name)) {
            $eventHandlers[] = $handlers;
        }
    }
    if (!empty($this->_events[$name])) {
        $eventHandlers[] = $this->_events[$name];
    }
    if (!empty($eventHandlers)) {
        $eventHandlers = call_user_func_array('array_merge', $eventHandlers);
        if ($event === null) {
            $event = new Event();
        }
        if ($event->sender === null) {
            $event->sender = $this;
        }
        $event->handled = false;
        $event->name = $name;
        foreach ($eventHandlers as $handler) {
            $event->data = $handler[1];
            call_user_func($handler[0], $event);
            // stop further handling if the event is handled
            if ($event->handled) {
                return;
            }
        }
    }
    // invoke class-level attached handlers
    Event::trigger($this, $name, $event);
}

            
xSendFile() publicメソッド

x-sendfile を使用して既存のファイルをブラウザにダウンロードとして送信します。

X-Sendfileは、ウェブアプリケーションがファイルのリクエストをウェブサーバにリダイレクトすることを可能にする機能です。これにより、ファイルの読み込みやユーザーへの送信などのタスクを実行する必要がなくなり、多くのファイル(または非常に大きなファイル)を扱う場合、ウェブアプリケーションはより早く終了できるため、パフォーマンスの大幅な向上につながります。

リクエストは特別な非標準のHTTPヘッダーを介してサーバに送信されます。ウェブサーバはこのようなヘッダーの存在を検出すると、すべての出力を破棄し、キャッシングヘッダーなどの最適化を含むウェブサーバの内部機能を使用して、そのヘッダーで指定されたファイルを送信します。

このヘッダーディレクティブは非標準であるため、異なるウェブサーバアプリケーションで異なるディレクティブが存在します。

そのため、このメソッドが動作するには、ウェブサーバでX-SENDFILEオプション/モジュールが有効になっており、適切なxHeaderが送信されている必要があります。

注意

このオプションを使用すると、ウェブフォルダにないファイル、または`.htaccess`など、それ以外の方法で保護されている(deny from all)ファイルもダウンロードできます。

副作用

このオプションがウェブサーバで無効になっている場合、このメソッドが呼び出されるとダウンロード設定ダイアログが開きますが、ダウンロードされたファイルのサイズは0バイトになります。

既知の問題

SSL接続を介してX-SENDFILEを使用する場合、Internet Explorer 6、7、8にはバグがあり、「Internet Explorerはこのインターネットサイトを開くことができませんでした。要求されたサイトは利用できないか、見つかりません。」のようなエラーメッセージが表示されます。この問題は、`Pragma`ヘッダーを削除することで回避できます。

Yii::$app->response->xSendFile('/home/user/Pictures/picture1.jpg');

こちらも参照してください sendFile().

public $this xSendFile ( $filePath, $attachmentName null, $options = [] )
$filePath string

フルパス付きのファイル名

$attachmentName string|null

ユーザーに表示されるファイル名。nullの場合、`$filePath`から決定されます。

$options array

ファイル送信のための追加オプション。次のオプションがサポートされています。

  • mimeType: コンテンツのMIMEタイプ。設定されていない場合、`$filePath`に基づいて推測されます。
  • inline: ブール値。ブラウザがブラウザウィンドウ内でファイルを開くかどうか。デフォルトはfalseで、ダウンロードダイアログが表示されます。
  • xHeader: string, x-sendfileヘッダーの名前。デフォルトは "X-Sendfile"。
戻り値 $this

レスポンスオブジェクト自体

                public function xSendFile($filePath, $attachmentName = null, $options = [])
{
    if ($attachmentName === null) {
        $attachmentName = basename($filePath);
    }
    if (isset($options['mimeType'])) {
        $mimeType = $options['mimeType'];
    } elseif (($mimeType = FileHelper::getMimeTypeByExtension($filePath)) === null) {
        $mimeType = 'application/octet-stream';
    }
    if (isset($options['xHeader'])) {
        $xHeader = $options['xHeader'];
    } else {
        $xHeader = 'X-Sendfile';
    }
    $disposition = empty($options['inline']) ? 'attachment' : 'inline';
    $this->getHeaders()
        ->setDefault($xHeader, $filePath)
        ->setDefault('Content-Type', $mimeType)
        ->setDefault('Content-Disposition', $this->getDispositionHeaderValue($disposition, $attachmentName));
    $this->format = self::FORMAT_RAW;
    return $this;
}

            

イベントの詳細

継承されたプロパティを非表示

EVENT_AFTER_PREPARE yii\base\Event型のイベント

prepare()send()で呼び出された直後にトリガーされるイベントです。このイベントに応答して、クライアントに送信される前にレスポンスコンテンツをフィルタリングできます。

EVENT_AFTER_SEND yii\base\Event型のイベント

send() の最後にトリガーされるイベントです。

EVENT_BEFORE_SEND yii\base\Event型のイベント

send() の最初にトリガーされるイベントです。