クラス yii\behaviors\CacheableWidgetBehavior
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 |
公開メソッド
プロパティの詳細
キャッシュオブジェクト、またはキャッシュコンポーネントID、またはキャッシュオブジェクトを作成するための構成配列。デフォルトは `cache` アプリケーションコンポーネントです。
キャッシュ依存関係、またはキャッシュ依存関係を作成するための構成配列、または `null`(キャッシュ依存関係なし)。
例えば、
[
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT MAX(updated_at) FROM posts',
]
これにより、ウィジェットキャッシュはすべての投稿の最終更新時間に依存します。投稿のいずれかの更新時間が変更されると、キャッシュされたコンテンツは無効になります。
キャッシュの有効期限(秒)。0 を設定すると、キャッシュされたデータは期限切れになりません。デフォルトは 60 秒(1 分)です。
キャッシュを有効にするかどうか。特定の条件に応じてウィジェットのキャッシュをオンオフできます。次の設定では、特別なGETパラメータが渡された場合、キャッシュが無効になります。
empty(Yii::$app->request->get('disable-caching'))
キャッシュされるコンテンツのバリエーションを引き起こす文字列の配列、または単一の文字列(例:アプリケーション言語、GETパラメータ)。
次のバリエーション設定により、現在のアプリケーション言語に応じてコンテンツが異なるバージョンでキャッシュされます。
[
Yii::$app->language,
]
メソッドの詳細
定義先: 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()");
}
定義先: 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();
}
定義先: 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);
}
定義先: yii\base\BaseObject::__isset()
プロパティが設定されているか(定義されていてnullではないか)を確認します。
isset($object->property)を実行した際に暗黙的に呼び出されるPHPのマジックメソッドであるため、直接呼び出さないでください。
プロパティが定義されていない場合、falseが返されることに注意してください。
| 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;
}
定義先: 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);
}
}
定義先: yii\base\BaseObject::__unset()
オブジェクトプロパティをnullに設定します。
unset($object->property)を実行した際に暗黙的に呼び出される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);
}
}
ウィジェットコンテンツを出力し、フラグメントキャッシュを終了します。
| public void afterRun ( $event ) | ||
| $event | yii\base\WidgetEvent |
|
public function afterRun($event)
{
echo $event->result;
$event->result = null;
$this->owner->view->endCache();
}
ビヘイビアオブジェクトをコンポーネントにアタッチします。
$ownerプロパティを設定し、events()で宣言されているイベントハンドラをアタッチします。このメソッドをオーバーライドする場合は、親の実装を必ず呼び出してください。
| public void attach ( $owner ) | ||
| $owner | yii\base\Component |
この動作をアタッチするコンポーネント。 |
public function attach($owner)
{
parent::attach($owner);
$this->initializeEventHandlers();
}
フラグメントキャッシュを開始します。コンテンツをキャッシュから取得できる場合、オーナーウィジェットの実行を防ぎます。
| public void beforeRun ( $event ) | ||
| $event | yii\base\WidgetEvent |
|
public function beforeRun($event)
{
$cacheKey = $this->getCacheKey();
$fragmentCacheConfiguration = $this->getFragmentCacheConfiguration();
if (!$this->owner->view->beginCache($cacheKey, $fragmentCacheConfiguration)) {
$event->isValid = false;
}
}
定義されている場所: 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);
}
定義されている場所: 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);
}
::classを使用してください。
定義されている場所: yii\base\BaseObject::className()
このクラスの完全修飾名を返します。
| public static string className ( ) | ||
| 戻り値 | string |
このクラスの完全修飾名。 |
|---|---|---|
public static function className()
{
return get_called_class();
}
定義されている場所: 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;
}
}
定義されている場所: 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 [];
}
定義されている場所: 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);
}
定義されている場所: 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);
}
定義されている場所: yii\base\BaseObject::init()
オブジェクトを初期化します。
このメソッドは、オブジェクトが指定された設定で初期化された後、コンストラクタの最後に呼び出されます。
| public void init ( ) |
public function init()
{
}
サインアップ または ログイン してコメントしてください。