0 フォロワー

クラス yii\caching\DbDependency

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

DbDependencyは、SQLステートメントのクエリ結果に基づく依存関係を表します。

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

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

パブリックプロパティ

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

プロパティ 説明 定義元
$data mixed キャッシュに保存され、後で最新の依存関係データと比較される依存関係データ。 yii\caching\Dependency
$db string DB接続のアプリケーションコンポーネントID。 yii\caching\DbDependency
$params array $sqlで指定されたSQLステートメントにバインドされるパラメータ (名前 => 値)。 yii\caching\DbDependency
$reusable boolean この依存関係が再利用可能かどうか。 yii\caching\Dependency
$sql string 結果が依存関係が変更されたかどうかを判断するために使用されるSQLクエリ。 yii\caching\DbDependency

パブリックメソッド

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

メソッド 説明 定義元
__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\DbDependency
generateReusableHash() 再利用可能な依存関係データを取得するために使用できる一意のハッシュを生成します。 yii\caching\Dependency

プロパティの詳細

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

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

DB接続のアプリケーションコンポーネントID。

public string $db 'db'
$params パブリックプロパティ

$sqlで指定されたSQLステートメントにバインドされるパラメータ (名前 => 値)。

public array $params = []
$sql public プロパティ

依存関係が変更されたかどうかを判断するために結果が使用されるSQLクエリ。クエリ結果の最初の行のみが使用されます。

public string $sql null

メソッド詳細

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

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

プロパティが読み取り可能かどうかを示す値を返します。

プロパティが読み取り可能であるのは、次の場合です。

  • クラスに、指定された名前に関連付けられた getter メソッドがある場合 (この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合 ($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()

プロパティが設定可能かどうかを示す値を返します。

プロパティが書き込み可能であるのは、次の場合です。

  • クラスに、指定された名前に関連付けられた setter メソッドがある場合 (この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合 ($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

$db が有効なアプリケーションコンポーネントIDでない場合

                protected function generateDependencyData($cache)
{
    /* @var $db Connection */
    $db = Instance::ensure($this->db, Connection::className());
    if ($this->sql === null) {
        throw new InvalidConfigException('DbDependency::sql must be set.');
    }
    if ($db->enableQueryCache) {
        // temporarily disable and re-enable query caching
        $db->enableQueryCache = false;
        $result = $db->createCommand($this->sql, $this->params)->queryOne();
        $db->enableQueryCache = true;
    } else {
        $result = $db->createCommand($this->sql, $this->params)->queryOne();
    }
    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()

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

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

  • クラスに、指定された名前に関連付けられたゲッターまたはセッターメソッドがある場合(この場合、プロパティ名は大文字と小文字を区別しません)。
  • クラスに、指定された名前のメンバー変数がある場合 ($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 = [];
}