0 follower

クラス yii\rest\Serializer

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

Serializerは、リソースオブジェクトとコレクションを配列表現に変換します。

Serializerは、主にRESTコントローラによって、さまざまなオブジェクトを配列表現に変換するために使用され、レスポンスフォーマッタによってJSONやXMLなどのさまざまなフォーマットに変換されます。

デフォルトの実装では、リソースをyii\base\Modelオブジェクトとして、コレクションをyii\data\DataProviderInterfaceを実装するオブジェクトとして処理します。より多くの型を処理するために、serialize()をオーバーライドすることができます。

パブリックプロパティ

継承されたプロパティを隠す

プロパティ 説明 定義元
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$collectionEnvelope string|null コレクション内のリソースオブジェクトを返すためのエンベロープの名前(例:items)。 yii\rest\Serializer
$currentPageHeader string 現在のページ番号(1ベース)に関する情報を含むHTTPヘッダーの名前。 yii\rest\Serializer
$expandParam string リソースオブジェクトについて、$fieldsParamにリストされているものに加えて、どのフィールドを返す必要があるかに関する情報を含むクエリパラメータの名前。 yii\rest\Serializer
$fieldsParam string yii\base\Modelオブジェクトについて、どのフィールドを返す必要があるかに関する情報を含むクエリパラメータの名前。 yii\rest\Serializer
$linksEnvelope string リンクオブジェクトを返すためのエンベロープの名前(例:_links)。 yii\rest\Serializer
$metaEnvelope string ページネーションオブジェクトを返すためのエンベロープの名前(例:_meta)。 yii\rest\Serializer
$pageCountHeader string データの合計ページ数に関する情報を含むHTTPヘッダーの名前。 yii\rest\Serializer
$perPageHeader string 各ページ内のデータ項目の数に関する情報を含むHTTPヘッダーの名前。 yii\rest\Serializer
$preserveKeys boolean コレクションデータをシリアル化するときに配列キーを保持するかどうか。 yii\rest\Serializer
$request yii\web\Request|null 現在のリクエスト。 yii\rest\Serializer
$response yii\web\Response|null 送信されるレスポンス。 yii\rest\Serializer
$totalCountHeader string データ項目の合計数に関する情報を含むHTTPヘッダーの名前。 yii\rest\Serializer

パブリックメソッド

継承されたメソッドを隠す

メソッド 説明 定義元
__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
detachBehavior() コンポーネントからビヘイビアをデタッチします。 yii\base\Component
detachBehaviors() コンポーネントからすべてのビヘイビアをデタッチします。 yii\base\Component
ensureBehaviors() behaviors()で宣言されたビヘイビアがこのコンポーネントにアタッチされていることを確認します。 yii\base\Component
getBehavior() 名前付きビヘイビアオブジェクトを返します。 yii\base\Component
getBehaviors() このコンポーネントにアタッチされているすべてのビヘイビアを返します。 yii\base\Component
hasEventHandlers() 指定されたイベントにハンドラーがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントにプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\rest\Serializer
off() このコンポーネントから既存のイベントハンドラーを削除します。 yii\base\Component
on() イベントにイベントハンドラーをアタッチします。 yii\base\Component
serialize() 指定されたデータを、他のフォーマットに簡単に変換できるフォーマットにシリアライズします。 yii\rest\Serializer
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

継承されたメソッドを隠す

メソッド 説明 定義元
addPaginationHeaders() レスポンスにページネーションに関する HTTP ヘッダーを追加します。 yii\rest\Serializer
getRequestedFields() yii\rest\Serializer
serializeDataProvider() データプロバイダーをシリアライズします。 yii\rest\Serializer
serializeModel() モデルオブジェクトをシリアライズします。 yii\rest\Serializer
serializeModelErrors() モデルのバリデーションエラーをシリアライズします。 yii\rest\Serializer
serializeModels() モデルのセットをシリアライズします。 yii\rest\Serializer
serializePagination() ページネーションを配列にシリアライズします。 yii\rest\Serializer

プロパティの詳細

継承されたプロパティを隠す

$collectionEnvelope public プロパティ

コレクション内のリソースオブジェクトを返すためのエンベロープの名前(例:items)。これは、リソースコレクションを提供するときに使用されます。これが設定され、ページネーションが有効になっている場合、シリアライザーは次の形式でコレクションを返します。

[
    'items' => [...],  // assuming collectionEnvelope is "items"
    '_links' => {  // pagination links as returned by Pagination::getLinks()
        'self' => '...',
        'next' => '...',
        'last' => '...',
    },
    '_meta' => {  // meta information as returned by Pagination::toArray()
        'totalCount' => 100,
        'pageCount' => 5,
        'currentPage' => 1,
        'perPage' => 20,
    },
]

このプロパティが設定されていない場合、リソース配列はエンベロープを使用せずに直接返されます。_linksおよび_metaに示されているページネーション情報は、レスポンスの HTTP ヘッダーからアクセスできます。

$currentPageHeader public プロパティ

現在のページ番号(1ベース)に関する情報を含む HTTP ヘッダーの名前。これは、ページネーションを使用してリソースコレクションを提供するときに使用されます。

public string $currentPageHeader 'X-Pagination-Current-Page'
$expandParam public プロパティ

リソースオブジェクトについて、$fieldsParamにリストされているものに加えて、どのフィールドを返す必要があるかに関する情報を含むクエリパラメータの名前。

public string $expandParam 'expand'
$fieldsParam public プロパティ

yii\base\Model オブジェクトに対して、どのフィールドを返すかに関する情報を含むクエリパラメーターの名前。パラメーターが指定されていないか空の場合、yii\base\Model::fields()で定義されているデフォルトのフィールドセットが返されます。

public string $fieldsParam 'fields'
$linksEnvelope public プロパティ (バージョン 2.0.4 から利用可能)

リンクオブジェクトを返すためのエンベロープの名前(例:_links)。collectionEnvelopeが設定されている場合にのみ有効になります。

public string $linksEnvelope '_links'
$metaEnvelope public プロパティ (バージョン 2.0.4 から利用可能)

ページネーションオブジェクトを返すためのエンベロープの名前(例:_meta)。collectionEnvelopeが設定されている場合にのみ有効になります。

public string $metaEnvelope '_meta'
$pageCountHeader public プロパティ

データの合計ページ数に関する情報を含む HTTP ヘッダーの名前。これは、ページネーションを使用してリソースコレクションを提供するときに使用されます。

public string $pageCountHeader 'X-Pagination-Page-Count'
$perPageHeader public プロパティ

各ページのデータアイテム数に関する情報を含む HTTP ヘッダーの名前。これは、ページネーションを使用してリソースコレクションを提供するときに使用されます。

public string $perPageHeader 'X-Pagination-Per-Page'
$preserveKeys public プロパティ (バージョン 2.0.10 から利用可能)

コレクションデータをシリアライズするときに配列キーを保持するかどうか。モデルオブジェクトをインデックスするために配列キーが使用される JSON オブジェクトとしてコレクションをシリアライズできるようにするには、これを true に設定します。デフォルトでは、配列がどのようにインデックス付けされているかに関係なく、すべてのコレクションが配列としてシリアライズされます。

以下も参照してください:serializeDataProvider()

public boolean $preserveKeys false
$request public プロパティ

現在のリクエスト。設定されていない場合は、requestアプリケーションコンポーネントが使用されます。

$response public プロパティ

送信されるレスポンス。設定されていない場合は、responseアプリケーションコンポーネントが使用されます。

$totalCountHeader public プロパティ

データ項目の総数に関する情報を含む HTTP ヘッダーの名前。これは、ページネーションを使用したリソースコレクションを提供する場合に使用されます。

public string $totalCountHeader 'X-Pagination-Total-Count'

メソッドの詳細

継承されたメソッドを隠す

__call() public メソッド

定義元: yii\base\Component::__call()

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

このメソッドは、アタッチされたビヘイビアに指定された名前のメソッドがあるかどうかを確認し、利用可能であればそれを実行します。

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

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

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws 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 メソッド

定義元: yii\base\Component::__clone()

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

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

public void __clone ( )

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

            
__construct() public メソッド

定義元: 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 メソッド

定義元: yii\base\Component::__get()

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

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

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

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

参照:__set()

public mixed __get ( $name )
$name string

プロパティ名

return mixed

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

throws yii\base\UnknownPropertyException

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

throws 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 メソッド

定義元: yii\base\Component::__isset()

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

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

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

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

参照:https://www.php.net/manual/en/function.isset.php

public boolean __isset ( $name )
$name string

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

return 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 メソッド

定義元: yii\base\Component::__set()

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

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

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

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

参照:__get()

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

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

$value mixed

プロパティ値

throws yii\base\UnknownPropertyException

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

throws 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 メソッド

定義元: yii\base\Component::__unset()

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

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

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

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

参照:https://www.php.net/manual/en/function.unset.php

public void __unset ( $name )
$name string

プロパティ名

throws 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);
}

            
addPaginationHeaders() protected メソッド

レスポンスにページネーションに関する HTTP ヘッダーを追加します。

protected void addPaginationHeaders ( $pagination )
$pagination yii\data\Pagination

                protected function addPaginationHeaders($pagination)
{
    $links = [];
    foreach ($pagination->getLinks(true) as $rel => $url) {
        $links[] = "<$url>; rel=$rel";
    }
    $this->response->getHeaders()
        ->set($this->totalCountHeader, $pagination->totalCount)
        ->set($this->pageCountHeader, $pagination->getPageCount())
        ->set($this->currentPageHeader, $pagination->getPage() + 1)
        ->set($this->perPageHeader, $pagination->pageSize)
        ->set('Link', implode(', ', $links));
}

            
attachBehavior() public メソッド

定義元: 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() に渡されるオブジェクト設定配列。
return 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 ( )
return 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

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

return 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

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

return 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 ( )
return string

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

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

            
detachBehavior() public メソッド

定義元: yii\base\Component::detachBehavior()

コンポーネントからビヘイビアをデタッチします。

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

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

ビヘイビアの名前。

return 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()

コンポーネントからすべてのビヘイビアをデタッチします。

public void detachBehaviors ( )

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

            
ensureBehaviors() public メソッド

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

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

public void ensureBehaviors ( )

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

            
getBehavior() public メソッド

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

名前付きビヘイビアオブジェクトを返します。

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

ビヘイビアの名前

return yii\base\Behavior|null

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

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

            
getBehaviors() public メソッド

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

このコンポーネントにアタッチされているすべてのビヘイビアを返します。

public yii\base\Behavior[] getBehaviors ( )
return yii\base\Behavior[]

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

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

            
getRequestedFields() protected メソッド
protected array getRequestedFields ( )
return array

リクエストされたフィールドの名前。最初の要素は、リクエストされたデフォルトフィールドのリストを表す配列で、2番目の要素は、デフォルトフィールドに加えてリクエストされた追加フィールドの配列です。

                protected function getRequestedFields()
{
    $fields = $this->request->get($this->fieldsParam);
    $expand = $this->request->get($this->expandParam);
    return [
        is_string($fields) ? preg_split('/\s*,\s*/', $fields, -1, PREG_SPLIT_NO_EMPTY) : [],
        is_string($expand) ? preg_split('/\s*,\s*/', $expand, -1, PREG_SPLIT_NO_EMPTY) : [],
    ];
}

            
hasEventHandlers() public メソッド

定義元: yii\base\Component::hasEventHandlers()

指定されたイベントにハンドラーがアタッチされているかどうかを示す値を返します。

public boolean hasEventHandlers ( $name )
$name string

イベント名

return 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

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

return 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()

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

プロパティは以下の場合に定義されます。

  • クラスが指定された名前に関連付けられた getter または setter メソッドを持っている場合 (この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスが指定された名前のメンバー変数を持っている場合 ($checkVars が true の場合)。
  • アタッチされたビヘイビアが、指定された名前のプロパティを持っている場合 ($checkBehaviors が true の場合)。

参照

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

プロパティ名

$checkVars boolean

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

$checkBehaviors boolean

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

return 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->request === null) {
        $this->request = Yii::$app->getRequest();
    }
    if ($this->response === null) {
        $this->response = Yii::$app->getResponse();
    }
}

            
off() public メソッド

定義元: yii\base\Component::off()

このコンポーネントから既存のイベントハンドラーを削除します。

このメソッドは on() の反対です。

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

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

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

イベント名

$handler callable|null

削除するイベントハンドラ。null の場合、名前付きイベントにアタッチされたすべてのハンドラが削除されます。

return 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]);
    }
}

            
serialize() public メソッド

指定されたデータを、他のフォーマットに簡単に変換できるフォーマットにシリアライズします。

このメソッドは主に、認識された型のオブジェクトを配列表現に変換します。不明なオブジェクト型やオブジェクトではないデータに対しては変換を行いません。デフォルトの実装では、yii\base\Modelyii\data\DataProviderInterface、および\JsonSerializableを処理します。より多くのオブジェクト型をサポートするために、このメソッドをオーバーライドすることができます。

public mixed serialize ( $data )
$data mixed

シリアライズされるデータ。

return mixed

変換されたデータ。

                public function serialize($data)
{
    if ($data instanceof Model && $data->hasErrors()) {
        return $this->serializeModelErrors($data);
    } elseif ($data instanceof Arrayable) {
        return $this->serializeModel($data);
    } elseif ($data instanceof \JsonSerializable) {
        return $data->jsonSerialize();
    } elseif ($data instanceof DataProviderInterface) {
        return $this->serializeDataProvider($data);
    } elseif (is_array($data)) {
        $serializedArray = [];
        foreach ($data as $key => $value) {
            $serializedArray[$key] = $this->serialize($value);
        }
        return $serializedArray;
    }
    return $data;
}

            
serializeDataProvider() protected メソッド

データプロバイダーをシリアライズします。

protected array serializeDataProvider ( $dataProvider )
$dataProvider yii\data\DataProviderInterface
return array

データプロバイダーの配列表現。

                protected function serializeDataProvider($dataProvider)
{
    if (($pagination = $dataProvider->getPagination()) !== false) {
        $this->addPaginationHeaders($pagination);
    }
    if ($this->request->getIsHead()) {
        return null;
    }
    if ($this->preserveKeys) {
        $models = $dataProvider->getModels();
    } else {
        $models = array_values($dataProvider->getModels());
    }
    $models = $this->serializeModels($models);
    if ($this->collectionEnvelope === null) {
        return $models;
    }
    $result = [
        $this->collectionEnvelope => $models,
    ];
    if ($pagination !== false) {
        return array_merge($result, $this->serializePagination($pagination));
    }
    return $result;
}

            
serializeModel() protected メソッド

モデルオブジェクトをシリアライズします。

protected array serializeModel ( $model )
$model yii\base\Arrayable
return array

モデルの配列表現。

                protected function serializeModel($model)
{
    if ($this->request->getIsHead()) {
        return null;
    }
    list($fields, $expand) = $this->getRequestedFields();
    return $model->toArray($fields, $expand);
}

            
serializeModelErrors() protected メソッド

モデルのバリデーションエラーをシリアライズします。

protected array serializeModelErrors ( $model )
$model yii\base\Model
return array

エラーの配列表現。

                protected function serializeModelErrors($model)
{
    $this->response->setStatusCode(422, 'Data Validation Failed.');
    $result = [];
    foreach ($model->getFirstErrors() as $name => $message) {
        $result[] = [
            'field' => $name,
            'message' => $message,
        ];
    }
    return $result;
}

            
serializeModels() protected メソッド

モデルのセットをシリアライズします。

protected array serializeModels ( array $models )
$models array
return array

モデルの配列表現。

                protected function serializeModels(array $models)
{
    foreach ($models as $i => $model) {
        if ($model instanceof Arrayable) {
            $models[$i] = $this->serializeModel($model);
        } elseif (is_array($model)) {
            $models[$i] = ArrayHelper::toArray($model);
        }
    }
    return $models;
}

            
serializePagination() protected メソッド

ページネーションを配列にシリアライズします。

参照:addPaginationHeaders().

protected array serializePagination ( $pagination )
$pagination yii\data\Pagination
return array

ページネーションの配列表現。

                protected function serializePagination($pagination)
{
    return [
        $this->linksEnvelope => Link::serialize($pagination->getLinks(true)),
        $this->metaEnvelope => [
            'totalCount' => $pagination->totalCount,
            'pageCount' => $pagination->getPageCount(),
            'currentPage' => $pagination->getPage() + 1,
            'perPage' => $pagination->getPageSize(),
        ],
    ];
}

            
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);
}