0 フォロワー

クラス yii\behaviors\CacheableWidgetBehavior

継承yii\behaviors\CacheableWidgetBehavior » yii\base\Behavior » yii\base\BaseObject
実装yii\base\Configurable
利用可能バージョン2.0.14
ソースコード https://github.com/yiisoft/yii2/blob/master/framework/behaviors/CacheableWidgetBehavior.php

Cacheable ウィジェットビヘイビアは、指定された期間と依存関係に従ってウィジェットコンテンツを自動的にキャッシュします。

アプリケーションに `cache` コンポーネントが構成されている場合、このビヘイビアは構成なしで使用できます。デフォルトでは、ウィジェットは1分間キャッシュされます。

次の例では、投稿が変更されるまで、投稿ウィジェットを無期限にキャッシュします。

use yii\behaviors\CacheableWidgetBehavior;

public function behaviors()
{
    return [
        [
            'class' => CacheableWidgetBehavior::class,
            'cacheDuration' => 0,
            'cacheDependency' => [
                'class' => 'yii\caching\DbDependency',
                'sql' => 'SELECT MAX(updated_at) FROM posts',
            ],
        ],
    ];
}

公開プロパティ

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

プロパティ 説明 定義元
$cache yii\caching\CacheInterface|string|array キャッシュオブジェクト、またはキャッシュコンポーネントID、またはキャッシュオブジェクトを作成するための構成配列。 yii\behaviors\CacheableWidgetBehavior
$cacheDependency yii\caching\Dependency|array|null キャッシュ依存関係、またはキャッシュ依存関係を作成するための構成配列、または `null`(キャッシュ依存関係なし)。 yii\behaviors\CacheableWidgetBehavior
$cacheDuration integer キャッシュ期間(秒)。 yii\behaviors\CacheableWidgetBehavior
$cacheEnabled boolean キャッシュを有効にするかどうか。 yii\behaviors\CacheableWidgetBehavior
$cacheKeyVariations string[]|string キャッシュされるコンテンツのバリエーションを引き起こす文字列の配列、または単一の文字列(例:アプリケーション言語、GETパラメータ)。 yii\behaviors\CacheableWidgetBehavior
$owner yii\base\Component|null このビヘイビアのオーナー yii\base\Behavior

公開メソッド

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

メソッド 説明 定義元
__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
afterRun() ウィジェットコンテンツを出力し、フラグメントキャッシュを終了します。 yii\behaviors\CacheableWidgetBehavior
attach() ビヘイビアオブジェクトをコンポーネントにアタッチします。 yii\behaviors\CacheableWidgetBehavior
beforeRun() フラグメントキャッシュを開始します。コンテンツをキャッシュから取得できる場合、オーナーウィジェットの実行を防ぎます。 yii\behaviors\CacheableWidgetBehavior
canGetProperty() プロパティを読み取ることができるかどうかを示す値を返します。 yii\base\BaseObject
canSetProperty() プロパティを設定できるかどうかを示す値を返します。 yii\base\BaseObject
className() このクラスの完全修飾名を返します。 yii\base\BaseObject
detach() ビヘイビアオブジェクトをコンポーネントからデタッチします。 yii\base\Behavior
events() $owner のイベントのイベントハンドラを宣言します。 yii\base\Behavior
hasMethod() メソッドが定義されているかどうかを示す値を返します。 yii\base\BaseObject
hasProperty() プロパティが定義されているかどうかを示す値を返します。 yii\base\BaseObject
init() オブジェクトを初期化します。 yii\base\BaseObject

プロパティの詳細

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

$cache public property

キャッシュオブジェクト、またはキャッシュコンポーネントID、またはキャッシュオブジェクトを作成するための構成配列。デフォルトは `cache` アプリケーションコンポーネントです。

$cacheDependency public property

キャッシュ依存関係、またはキャッシュ依存関係を作成するための構成配列、または `null`(キャッシュ依存関係なし)。

例えば、

[
    'class' => 'yii\caching\DbDependency',
    'sql' => 'SELECT MAX(updated_at) FROM posts',
]

これにより、ウィジェットキャッシュはすべての投稿の最終更新時間に依存します。投稿のいずれかの更新時間が変更されると、キャッシュされたコンテンツは無効になります。

$cacheDuration public property

キャッシュの有効期限(秒)。0 を設定すると、キャッシュされたデータは期限切れになりません。デフォルトは 60 秒(1 分)です。

public integer $cacheDuration 60
$cacheEnabled public property

キャッシュを有効にするかどうか。特定の条件に応じてウィジェットのキャッシュをオンオフできます。次の設定では、特別なGETパラメータが渡された場合、キャッシュが無効になります。

empty(Yii::$app->request->get('disable-caching'))
public boolean $cacheEnabled true
$cacheKeyVariations public property

キャッシュされるコンテンツのバリエーションを引き起こす文字列の配列、または単一の文字列(例:アプリケーション言語、GETパラメータ)。

次のバリエーション設定により、現在のアプリケーション言語に応じてコンテンツが異なるバージョンでキャッシュされます。

[
    Yii::$app->language,
]

メソッドの詳細

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

__call() public method

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

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

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

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

メソッド名

$params array

メソッドパラメータ

戻り値 mixed

メソッドの戻り値

例外 yii\base\UnknownMethodException

未知のメソッド呼び出し時

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

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

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

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

__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)) {
        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 method

定義先: 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

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

戻り値 boolean

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

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

            
__set() public method

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

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

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

__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)) {
        $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 method

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

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

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

プロパティが定義されていない場合、このメソッドは何もしません。プロパティが読み取り専用の場合、例外をスローします。

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

            
afterRun() public method

ウィジェットコンテンツを出力し、フラグメントキャッシュを終了します。

public void afterRun ( $event )
$event yii\base\WidgetEvent

Widget::EVENT_AFTER_RUNイベント。

                public function afterRun($event)
{
    echo $event->result;
    $event->result = null;
    $this->owner->view->endCache();
}

            
attach() public method

ビヘイビアオブジェクトをコンポーネントにアタッチします。

$ownerプロパティを設定し、events()で宣言されているイベントハンドラをアタッチします。このメソッドをオーバーライドする場合は、親の実装を必ず呼び出してください。

public void attach ( $owner )
$owner yii\base\Component

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

                public function attach($owner)
{
    parent::attach($owner);
    $this->initializeEventHandlers();
}

            
beforeRun() publicメソッド

フラグメントキャッシュを開始します。コンテンツをキャッシュから取得できる場合、オーナーウィジェットの実行を防ぎます。

public void beforeRun ( $event )
$event yii\base\WidgetEvent

Widget::EVENT_BEFORE_RUN イベント。

                public function beforeRun($event)
{
    $cacheKey = $this->getCacheKey();
    $fragmentCacheConfiguration = $this->getFragmentCacheConfiguration();
    if (!$this->owner->view->beginCache($cacheKey, $fragmentCacheConfiguration)) {
        $event->isValid = false;
    }
}

            
canGetProperty() publicメソッド

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

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

プロパティは、以下の場合に読み取り可能です。

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

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

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

プロパティ名

$checkVars boolean

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

戻り値 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

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

戻り値 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 ( )
戻り値 string

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

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

            
detach() publicメソッド

定義されている場所: yii\base\Behavior::detach()

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

デフォルトの実装では、$ownerプロパティをアンセットし、events()で宣言されたイベントハンドラをデタッチします。このメソッドをオーバーライドする場合は、親実装を必ず呼び出してください。

public void detach ( )

                public function detach()
{
    if ($this->owner) {
        foreach ($this->_attachedEvents as $event => $handler) {
            $this->owner->off($event, is_string($handler) ? [$this, $handler] : $handler);
        }
        $this->_attachedEvents = [];
        $this->owner = null;
    }
}

            
events() publicメソッド

定義されている場所: yii\base\Behavior::events()

$owner のイベントのイベントハンドラを宣言します。

子クラスはこのメソッドをオーバーライドして、$ownerコンポーネントのイベントにアタッチするべきPHPコールバックを宣言できます。

コールバックは、ビヘイビアがオーナーにアタッチされると$ownerのイベントにアタッチされ、ビヘイビアがコンポーネントからデタッチされるとイベントからデタッチされます。

コールバックは、以下のいずれかになります。

  • このビヘイビアのメソッド: 'handleClick'[$this, 'handleClick']と同等
  • オブジェクトメソッド: [$object, 'handleClick']
  • 静的メソッド: ['Page', 'handleClick']
  • 無名関数: function ($event) { ... }

例を以下に示します。

[
    Model::EVENT_BEFORE_VALIDATE => 'myBeforeValidate',
    Model::EVENT_AFTER_VALIDATE => 'myAfterValidate',
]
public array events ( )
戻り値 array

イベント(配列のキー)と対応するイベントハンドラメソッド(配列の値)。

                public function events()
{
    return [];
}

            
hasMethod() publicメソッド

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

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

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

public boolean hasMethod ( $name )
$name string

メソッド名

戻り値 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

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

戻り値 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()
{
}