0 フォロワー

クラス yii\caching\DbQueryDependency

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

DbQueryDependency は、yii\db\QueryInterface インスタンスのクエリ結果に基づく依存関係を表します。

クエリ結果が変更されると、依存関係が変更されたと見なされます。クエリは、$query プロパティを介して指定されます。

yii\db\QueryInterface に一致する任意のクラスのオブジェクトを使用できるため、この依存関係は、通常のリレーショナルデータベースだけでなく、MongoDB、Redis などでも使用できます。

キャッシュの詳細と使用法については、キャッシュに関するガイド記事を参照してください。

こちらもご覧ください yii\db\QueryInterface

パブリックプロパティ

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

プロパティ タイプ 説明 定義元
$data mixed キャッシュに保存され、後で最新の依存関係データと比較される依存関係データ。 yii\caching\Dependency
$db string|array|object データベース接続のアプリケーションコンポーネント ID、接続オブジェクト、またはその配列構成。 yii\caching\DbQueryDependency
$method string|callable|null $query オブジェクト上で呼び出す必要があるメソッド。 yii\caching\DbQueryDependency
$query yii\db\QueryInterface 依存関係が変更されたかどうかを判断するために使用されるクエリの結果。 yii\caching\DbQueryDependency
$reusable boolean この依存関係が再利用可能かどうか。 yii\caching\Dependency

パブリックメソッド

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

メソッド 説明 定義元
__call() クラスメソッドではない名前付きメソッドを呼び出します。 yii\base\BaseObject
__construct() コンストラクタ。 yii\base\BaseObject
__get() オブジェクトプロパティの値を返します。 yii\base\BaseObject
__isset() プロパティが設定されているか、つまり定義されていて null でないかを確認します。 yii\base\BaseObject
__set() オブジェクトプロパティの値を設定します。 yii\base\BaseObject
__unset() オブジェクトプロパティを null に設定します。 yii\base\BaseObject
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\BaseObject
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
evaluateDependency() 依存関係に関連するデータを生成して保存することにより、依存関係を評価します。 yii\caching\Dependency
getHasChanged() 依存関係が変更されたかどうかを示す値を返します。 yii\caching\Dependency
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\base\BaseObject
isChanged() 依存関係が変更されたかどうかを確認します。 yii\caching\Dependency
resetReusableData() 再利用可能な依存関係のためにキャッシュされたすべてのデータをリセットします。 yii\caching\Dependency

保護されたメソッド

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

メソッド 説明 定義元
generateDependencyData() 依存関係が変更されたかどうかを判断するために必要なデータを生成します。 yii\caching\DbQueryDependency
generateReusableHash() 再利用可能な依存関係データを取得するために使用できる一意のハッシュを生成します。 yii\caching\Dependency

プロパティの詳細

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

$db パブリックプロパティ

データベース接続のアプリケーションコンポーネント ID、接続オブジェクト、またはその配列構成。このフィールドは空白のままにして、クエリが接続を自動的に決定できるようにすることができます。

public string|array|object $db null
$method パブリックプロパティ

$query オブジェクト上で呼び出す必要があるメソッド。

文字列として指定した場合、そのような名前を持つ独自のクエリメソッドが呼び出され、$db 値が最初の引数として渡されます。例: existsall

このフィールドは、次の署名の PHP コールバックとして指定できます。

function (QueryInterface $query, mixed $db) {
    //return mixed;
}

設定しない場合、yii\db\QueryInterface::one() が使用されます。

public string|callable|null $method null
$query パブリックプロパティ

依存関係が変更されたかどうかを判断するために使用されるクエリの結果。呼び出す実際のクエリメソッドは、$method によって決定されます。

メソッドの詳細

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

__call() public メソッド

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

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

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

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

メソッド名

$params array

メソッドのパラメータ

return mixed

メソッドの戻り値

throws yii\base\UnknownMethodException

不明なメソッドを呼び出した場合

                public function __call($name, $params)
{
    throw new UnknownMethodException('Calling unknown method: ' . get_class($this) . "::$name()");
}

            
__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\BaseObject::__get()

オブジェクトプロパティの値を返します。

$value = $object->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)) {
        return $this->$getter();
    } elseif (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\BaseObject::__isset()

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

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

プロパティが定義されていない場合は、false が返されることに注意してください。

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

public boolean __isset ( $name )
$name string

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

return boolean

指定されたプロパティが設定されている (null でない) かどうか。

                public function __isset($name)
{
    $getter = 'get' . $name;
    if (method_exists($this, $getter)) {
        return $this->$getter() !== null;
    }
    return false;
}

            
__set() public メソッド

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

オブジェクトプロパティの値を設定します。

$object->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)) {
        $this->$setter($value);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Setting read-only property: ' . get_class($this) . '::' . $name);
    } else {
        throw new UnknownPropertyException('Setting unknown property: ' . get_class($this) . '::' . $name);
    }
}

            
__unset() public メソッド

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

オブジェクトプロパティを null に設定します。

unset($object->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);
    } elseif (method_exists($this, 'get' . $name)) {
        throw new InvalidCallException('Unsetting read-only property: ' . get_class($this) . '::' . $name);
    }
}

            
canGetProperty() public メソッド

定義元: yii\base\BaseObject::canGetProperty()

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

プロパティが読み取り可能なのは、次のいずれかの場合です。

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

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

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

プロパティ名

$checkVars boolean

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

return boolean

プロパティが読み取り可能かどうか

                public function canGetProperty($name, $checkVars = true)
{
    return method_exists($this, 'get' . $name) || $checkVars && property_exists($this, $name);
}

            
canSetProperty() public メソッド

定義元: yii\base\BaseObject::canSetProperty()

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

プロパティが書き込み可能なのは、次のいずれかの場合です。

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

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

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

プロパティ名

$checkVars boolean

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

return boolean

プロパティが書き込み可能かどうか

                public function canSetProperty($name, $checkVars = true)
{
    return method_exists($this, 'set' . $name) || $checkVars && property_exists($this, $name);
}

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

            
evaluateDependency() public メソッド

定義元: yii\caching\Dependency::evaluateDependency()

依存関係に関連するデータを生成して保存することにより、依存関係を評価します。

このメソッドは、データをキャッシュに書き込む前にキャッシュによって呼び出されます。

public void evaluateDependency ( $cache )
$cache yii\caching\CacheInterface

この依存関係を現在評価しているキャッシュコンポーネント

                public function evaluateDependency($cache)
{
    if ($this->reusable) {
        $hash = $this->generateReusableHash();
        if (!array_key_exists($hash, self::$_reusableData)) {
            self::$_reusableData[$hash] = $this->generateDependencyData($cache);
        }
        $this->data = self::$_reusableData[$hash];
    } else {
        $this->data = $this->generateDependencyData($cache);
    }
}

            
generateDependencyData() protected メソッド

依存関係が変更されたかどうかを判断するために必要なデータを生成します。

このメソッドは、クエリ結果を返します。

protected mixed generateDependencyData ( $cache )
$cache yii\caching\CacheInterface

この依存関係を現在評価しているキャッシュコンポーネント

return mixed

依存関係が変更されたかどうかを判断するために必要なデータ。

throws yii\base\InvalidConfigException

無効な構成の場合。

                protected function generateDependencyData($cache)
{
    $db = $this->db;
    if ($db !== null) {
        $db = Instance::ensure($db);
    }
    if (!$this->query instanceof QueryInterface) {
        throw new InvalidConfigException('"' . get_class($this) . '::$query" should be an instance of "yii\db\QueryInterface".');
    }
    if (!empty($db->enableQueryCache)) {
        // temporarily disable and re-enable query caching
        $originEnableQueryCache = $db->enableQueryCache;
        $db->enableQueryCache = false;
        $result = $this->executeQuery($this->query, $db);
        $db->enableQueryCache = $originEnableQueryCache;
    } else {
        $result = $this->executeQuery($this->query, $db);
    }
    return $result;
}

            
generateReusableHash() protected メソッド

定義元: yii\caching\Dependency::generateReusableHash()

再利用可能な依存関係データを取得するために使用できる一意のハッシュを生成します。

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

protected string generateReusableHash ( )
return string

このキャッシュ依存関係の一意のハッシュ値。

                protected function generateReusableHash()
{
    $clone = clone $this;
    $clone->data = null; // https://github.com/yiisoft/yii2/issues/3052
    try {
        $serialized = serialize($clone);
    } catch (\Exception $e) {
        // unserializable properties are nulled
        foreach ($clone as $name => $value) {
            if (is_object($value) && $value instanceof \Closure) {
                $clone->{$name} = null;
            }
        }
        $serialized = serialize($clone);
    }
    return sha1($serialized);
}

            
getHasChanged() public メソッド
バージョン 2.0.11 から非推奨。バージョン 2.1 で削除されます。isChanged() を代わりに使用してください。

定義元: yii\caching\Dependency::getHasChanged()

依存関係が変更されたかどうかを示す値を返します。

public boolean getHasChanged ( $cache )
$cache yii\caching\CacheInterface

この依存関係を現在評価しているキャッシュコンポーネント

return boolean

依存関係が変更されたかどうか。

                public function getHasChanged($cache)
{
    return $this->isChanged($cache);
}

            
hasMethod() public メソッド

定義元: yii\base\BaseObject::hasMethod()

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

デフォルトの実装は、php 関数 method_exists() の呼び出しです。php のマジックメソッド __call() を実装した場合は、このメソッドをオーバーライドできます。

public boolean hasMethod ( $name )
$name string

メソッド名

return boolean

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

                public function hasMethod($name)
{
    return method_exists($this, $name);
}

            
hasProperty() public メソッド

定義元: yii\base\BaseObject::hasProperty()

プロパティが定義されているかどうかを示す値を返します。

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

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

参照

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

プロパティ名

$checkVars boolean

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

return boolean

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

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

            
init() public メソッド

定義元: yii\base\BaseObject::init()

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

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

public void init ( )

                public function init()
{
}

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

定義元: yii\caching\Dependency::isChanged()

依存関係が変更されたかどうかを確認します。

public boolean isChanged ( $cache )
$cache yii\caching\CacheInterface

この依存関係を現在評価しているキャッシュコンポーネント

return boolean

依存関係が変更されたかどうか。

                public function isChanged($cache)
{
    if ($this->reusable) {
        $hash = $this->generateReusableHash();
        if (!array_key_exists($hash, self::$_reusableData)) {
            self::$_reusableData[$hash] = $this->generateDependencyData($cache);
        }
        $data = self::$_reusableData[$hash];
    } else {
        $data = $this->generateDependencyData($cache);
    }
    return $data !== $this->data;
}

            
resetReusableData() public static メソッド

定義元: yii\caching\Dependency::resetReusableData()

再利用可能な依存関係のためにキャッシュされたすべてのデータをリセットします。

public static void resetReusableData ( )

                public static function resetReusableData()
{
    self::$_reusableData = [];
}