0 フォロワー

クラス yii\data\ArrayDataProvider

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

ArrayDataProvider は、データ配列に基づいたデータプロバイダを実装します。

$allModels プロパティには、ソートおよび/またはページングされる可能性のあるすべてのデータモデルが含まれています。ArrayDataProvider は、ソートおよび/またはページング後のデータを供給します。ソートとページングの動作をカスタマイズするには、$sort プロパティと $pagination プロパティを構成できます。

$allModels 配列の要素は、オブジェクト(例:モデルオブジェクト)または連想配列(例:DAO のクエリ結果)のいずれかです。データレコードを一意に識別するフィールドの名前、またはそのようなフィールドがない場合は false を $key プロパティに設定してください。

yii\data\ActiveDataProvider と比較して、ArrayDataProvider は $allModels を準備する必要があるため、効率が低い可能性があります。

ArrayDataProvider は次のように使用できます。

$query = new Query;
$provider = new ArrayDataProvider([
    'allModels' => $query->from('post')->all(),
    'sort' => [
        'attributes' => ['id', 'username', 'email'],
    ],
    'pagination' => [
        'pageSize' => 10,
    ],
]);
// get the posts in the current page
$posts = $provider->getModels();

注:ソート機能を使用する場合は、プロバイダがどの列をソートできるかを知るために、$sort プロパティを構成する必要があります。

ArrayDataProvider の詳細と使用方法については、データプロバイダに関するガイド記事を参照してください。

公開プロパティ

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

プロパティ 説明 定義元
$allModels array ページングまたはソートされていないデータ。 yii\data\ArrayDataProvider
$behaviors yii\base\Behavior[] このコンポーネントにアタッチされたビヘイビアのリスト。 yii\base\Component
$count integer 現在のページのデータモデルの数。 yii\data\BaseDataProvider
$id string|null すべてのデータプロバイダの中で、データプロバイダを一意に識別するID。 yii\data\BaseDataProvider
$key string|callable|null データモデルのキーとして使用される列。 yii\data\ArrayDataProvider
$keys array $modelsに対応するキー値のリスト。 yii\data\BaseDataProvider
$modelClass string 表されるModelクラスの名前。 yii\data\ArrayDataProvider
$models array 現在のページのデータモデルのリスト。 yii\data\BaseDataProvider
$pagination yii\data\Pagination|false ページングオブジェクト。 yii\data\BaseDataProvider
$sort yii\data\Sort|boolean ソートオブジェクト。 yii\data\BaseDataProvider
$totalCount integer 可能なデータモデルの総数。 yii\data\BaseDataProvider

公開メソッド

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

メソッド 説明 定義元
__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
getCount() 現在のページのデータモデルの数を返します。 yii\data\BaseDataProvider
getKeys() データモデルに関連付けられたキー値を返します。 yii\data\BaseDataProvider
getModels() 現在のページのデータモデルを返します。 yii\data\BaseDataProvider
getPagination() このデータプロバイダで使用されるページングオブジェクトを返します。 yii\data\BaseDataProvider
getSort() このデータプロバイダで使用されるソートオブジェクトを返します。 yii\data\BaseDataProvider
getTotalCount() データモデルの総数を返します。 yii\data\BaseDataProvider
hasEventHandlers() 指定されたイベントにハンドラがアタッチされているかどうかを示す値を返します。 yii\base\Component
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\Component
hasProperty() このコンポーネントのプロパティが定義されているかどうかを示す値を返します。 yii\base\Component
init() オブジェクトを初期化します。 yii\data\BaseDataProvider
off() このコンポーネントから既存のイベントハンドラをデタッチします。 yii\base\Component
on() イベントにイベントハンドラをアタッチします。 yii\base\Component
prepare() データモデルとキーを準備します。 yii\data\BaseDataProvider
refresh() データプロバイダを更新します。 yii\data\BaseDataProvider
setKeys() データモデルに関連付けられたキー値を設定します。 yii\data\BaseDataProvider
setModels() 現在のページのデータモデルを設定します。 yii\data\BaseDataProvider
setPagination() このデータプロバイダのページングを設定します。 yii\data\BaseDataProvider
setSort() このデータプロバイダのソート定義を設定します。 yii\data\BaseDataProvider
setTotalCount() データモデルの総数を設定します。 yii\data\BaseDataProvider
trigger() イベントをトリガーします。 yii\base\Component

保護されたメソッド

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

メソッド 説明 定義元
prepareKeys() 現在利用可能なデータモデルに関連付けられたキーを準備します。 yii\data\ArrayDataProvider
prepareModels() 現在のページで使用可能なデータモデルを準備します。 yii\data\ArrayDataProvider
prepareTotalCount() このデータプロバイダー内のデータモデルの総数を示す値を返します。 yii\data\ArrayDataProvider
sortModels() 指定されたソート定義に従ってデータモデルをソートします。 yii\data\ArrayDataProvider

プロパティの詳細

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

$allModels public property

ページングまたはソートされていないデータ。ページングが有効になっている場合、このプロパティは通常、$modelsよりも多くの要素を含みます。配列の要素は、0から始まる整数キーを使用する必要があります。

public array $allModels null
$key public property

データモデルのキーとして使用されるカラム。カラム名、または指定されたデータモデルのキー値を返すcallableのいずれかです。これが設定されていない場合、$models配列のインデックスが使用されます。

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

public string|callable|null $key null
$modelClass public property (version 2.0.9から利用可能)

Modelクラスの名前を表します。このプロパティは、カラム名を取得するために使用されます。

public string $modelClass 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メソッド

定義位置: 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();
}

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

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

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

ビヘイビア名

戻り値 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 ( )
戻り値 yii\base\Behavior[]

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

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

            
getCount() public メソッド

定義されている場所: yii\data\BaseDataProvider::getCount()

現在のページのデータモデルの数を返します。

public integer getCount ( )
戻り値 integer

現在のページのデータモデルの数。

                public function getCount()
{
    return count($this->getModels());
}

            
getKeys() public メソッド

定義されている場所: yii\data\BaseDataProvider::getKeys()

データモデルに関連付けられたキー値を返します。

public array getKeys ( )
戻り値 array

$modelsに対応するキー値のリスト。 $models内の各データモデルはこの配列内の対応するキー値によって一意に識別されます。

                public function getKeys()
{
    $this->prepare();
    return $this->_keys;
}

            
getModels() public メソッド

定義されている場所: yii\data\BaseDataProvider::getModels()

現在のページのデータモデルを返します。

public array getModels ( )
戻り値 array

現在のページのデータモデルのリスト。

                public function getModels()
{
    $this->prepare();
    return $this->_models;
}

            
getPagination() public メソッド

定義されている場所: yii\data\BaseDataProvider::getPagination()

このデータプロバイダで使用されるページングオブジェクトを返します。

prepare() または getModels() を最初に呼び出して、yii\data\Pagination::$totalCountyii\data\Pagination::$pageCount の正しい値を取得する必要があることに注意してください。

public yii\data\Pagination|false getPagination ( )
戻り値 yii\data\Pagination|false

ページネーションオブジェクト。falseの場合は、ページネーションが無効になっていることを意味します。

                public function getPagination()
{
    if ($this->_pagination === null) {
        $this->setPagination([]);
    }
    return $this->_pagination;
}

            
getSort() public メソッド

定義されている場所: yii\data\BaseDataProvider::getSort()

このデータプロバイダで使用されるソートオブジェクトを返します。

public yii\data\Sort|boolean getSort ( )
戻り値 yii\data\Sort|boolean

ソートオブジェクト。falseの場合は、ソートが無効になっていることを意味します。

                public function getSort()
{
    if ($this->_sort === null) {
        $this->setSort([]);
    }
    return $this->_sort;
}

            
getTotalCount() public メソッド

定義されている場所: yii\data\BaseDataProvider::getTotalCount()

データモデルの総数を返します。

$pagination がfalseの場合、これは $count と同じ値を返します。それ以外の場合は、カウントを取得するために prepareTotalCount() を呼び出します。

public integer getTotalCount ( )
戻り値 integer

可能なデータモデルの総数。

                public function getTotalCount()
{
    if ($this->getPagination() === false) {
        return $this->getCount();
    } elseif ($this->_totalCount === null) {
        $this->_totalCount = $this->prepareTotalCount();
    }
    return $this->_totalCount;
}

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

定義されている場所: yii\data\BaseDataProvider::init()

オブジェクトを初期化します。

このメソッドは、オブジェクトが指定された設定で初期化された後、コンストラクタの最後に呼び出されます。

public void init ( )

                public function init()
{
    parent::init();
    if ($this->id === null) {
        if (self::$counter > 0) {
            $this->id = 'dp-' . self::$counter;
        }
        self::$counter++;
    }
}

            
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() publicメソッド

定義位置: yii\data\BaseDataProvider::prepare()

データモデルとキーを準備します。

このメソッドは、getModels()getKeys()で取得できるデータモデルとキーを準備します。

このメソッドは、まだ呼び出されていない場合、getModels()getKeys()によって暗黙的に呼び出されます。

public void prepare ( $forcePrepare false )
$forcePrepare boolean

既に実行されている場合でも、データの準備を強制的に実行するかどうかを指定します。

                public function prepare($forcePrepare = false)
{
    if ($forcePrepare || $this->_models === null) {
        $this->_models = $this->prepareModels();
    }
    if ($forcePrepare || $this->_keys === null) {
        $this->_keys = $this->prepareKeys($this->_models);
    }
}

            
prepareKeys() protectedメソッド

現在利用可能なデータモデルに関連付けられたキーを準備します。

protected array prepareKeys ( $models )
$models array

利用可能なデータモデル

戻り値 array

キー

                protected function prepareKeys($models)
{
    if ($this->key !== null) {
        $keys = [];
        foreach ($models as $model) {
            if (is_string($this->key)) {
                $keys[] = $model[$this->key];
            } else {
                $keys[] = call_user_func($this->key, $model);
            }
        }
        return $keys;
    }
    return array_keys($models);
}

            
prepareModels() protectedメソッド

現在のページで使用可能なデータモデルを準備します。

protected array prepareModels ( )
戻り値 array

利用可能なデータモデル

                protected function prepareModels()
{
    if (($models = $this->allModels) === null) {
        return [];
    }
    if (($sort = $this->getSort()) !== false) {
        $models = $this->sortModels($models, $sort);
    }
    if (($pagination = $this->getPagination()) !== false) {
        $pagination->totalCount = $this->getTotalCount();
        if ($pagination->getPageSize() > 0) {
            $models = array_slice($models, $pagination->getOffset(), $pagination->getLimit(), true);
        }
    }
    return $models;
}

            
prepareTotalCount() protectedメソッド

このデータプロバイダー内のデータモデルの総数を示す値を返します。

protected integer prepareTotalCount ( )
戻り値 integer

このデータプロバイダ内のデータモデルの総数。

                protected function prepareTotalCount()
{
    return is_array($this->allModels) ? count($this->allModels) : 0;
}

            
refresh() publicメソッド

定義位置: yii\data\BaseDataProvider::refresh()

データプロバイダを更新します。

このメソッドを呼び出した後、getModels()getKeys()、またはgetTotalCount()が再度呼び出されると、クエリが再実行され、利用可能な最新のデータが返されます。

public void refresh ( )

                public function refresh()
{
    $this->_totalCount = null;
    $this->_models = null;
    $this->_keys = null;
}

            
setKeys() publicメソッド

定義位置: yii\data\BaseDataProvider::setKeys()

データモデルに関連付けられたキー値を設定します。

public void setKeys ( $keys )
$keys array

$modelsに対応するキー値のリスト。

                public function setKeys($keys)
{
    $this->_keys = $keys;
}

            
setModels() publicメソッド

定義位置: yii\data\BaseDataProvider::setModels()

現在のページのデータモデルを設定します。

public void setModels ( $models )
$models array

現在のページのモデル

                public function setModels($models)
{
    $this->_models = $models;
}

            
setPagination() publicメソッド

定義位置: yii\data\BaseDataProvider::setPagination()

このデータプロバイダのページングを設定します。

public void setPagination ( $value )
$value array|yii\data\Pagination|boolean

このデータプロバイダで使用されるページネーションです。以下のいずれかになります。

  • ページネーションオブジェクトを作成するための設定配列。「class」要素はデフォルトで「yii\data\Pagination」になります。
  • yii\data\Paginationまたはそのサブクラスのインスタンス
  • ページネーションを無効にする必要がある場合、false。
例外 yii\base\InvalidArgumentException

                public function setPagination($value)
{
    if (is_array($value)) {
        $config = ['class' => Pagination::className()];
        if ($this->id !== null) {
            $config['pageParam'] = $this->id . '-page';
            $config['pageSizeParam'] = $this->id . '-per-page';
        }
        $this->_pagination = Yii::createObject(array_merge($config, $value));
    } elseif ($value instanceof Pagination || $value === false) {
        $this->_pagination = $value;
    } else {
        throw new InvalidArgumentException('Only Pagination instance, configuration array or false is allowed.');
    }
}

            
setSort() publicメソッド

定義位置: yii\data\BaseDataProvider::setSort()

このデータプロバイダのソート定義を設定します。

public void setSort ( $value )
$value array|yii\data\Sort|boolean

このデータプロバイダで使用されるソート定義です。以下のいずれかになります。

  • ソート定義オブジェクトを作成するための設定配列。「class」要素はデフォルトで「yii\data\Sort」になります。
  • yii\data\Sortまたはそのサブクラスのインスタンス
  • ソートを無効にする必要がある場合、false。
例外 yii\base\InvalidArgumentException

                public function setSort($value)
{
    if (is_array($value)) {
        $config = ['class' => Sort::className()];
        if ($this->id !== null) {
            $config['sortParam'] = $this->id . '-sort';
        }
        $this->_sort = Yii::createObject(array_merge($config, $value));
    } elseif ($value instanceof Sort || $value === false) {
        $this->_sort = $value;
    } else {
        throw new InvalidArgumentException('Only Sort instance, configuration array or false is allowed.');
    }
}

            
setTotalCount() publicメソッド

定義されている場所: yii\data\BaseDataProvider::setTotalCount()

データモデルの総数を設定します。

public void setTotalCount ( $value )
$value integer

データモデルの総数。

                public function setTotalCount($value)
{
    $this->_totalCount = $value;
}

            
sortModels() protectedメソッド

指定されたソート定義に従ってデータモデルをソートします。

protected array sortModels ( $models, $sort )
$models array

ソートされるモデル

$sort yii\data\Sort

ソート定義

戻り値 array

ソートされたデータモデル

                protected function sortModels($models, $sort)
{
    $orders = $sort->getOrders();
    if (!empty($orders)) {
        ArrayHelper::multisort($models, array_keys($orders), array_values($orders), $sort->sortFlags);
    }
    return $models;
}

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