Класс CounterCacheBehavior
Поведение CounterCache
Разрешает моделям кэшировать количество подключений в заданном соотношении.
Примеры с моделью Post, принадлежащей модели User
Обычный кэш счётчика
[
'Users' => [
'post_count'
]
] Кэш счётчика с областью
[
'Users' => [
'posts_published' => [
'conditions' => [
'published' => true
]
]
]
] Кэш счётчика с использованием пользовательского поиска
[
'Users' => [
'posts_published' => [
'finder' => 'published' // Will be using findPublished()
]
]
] Кэш счётчика с использованием лямбда-функции, возвращающей количество. Это эквивалентно примеру №2
[
'Users' => [
'posts_published' => function (Event $event, EntityInterface $entity, Table $table) {
$query = $table->find('all')->where([
'published' => true,
'user_id' => $entity->get('user_id')
]);
return $query->count();
}
]
] При использовании лямбда-функции вы можете вернуть false для отключения обновления значения счётчика для текущей операции.
Игнорировать обновление поля, если оно загрязнено
[
'Users' => [
'posts_published' => [
'ignoreDirty' => true
]
]
] Вы можете полностью отключить обновления счётчика, передав опцию ignoreCounterCache в операцию сохранения:
$this->Articles->save($article, ['ignoreCounterCache' => true]);
- Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\CounterCacheBehavior
Резюме свойств
-
$_ignoreDirtyprotectedХранит поля, которые должны быть проигнорированыarray
Унаследованные свойства
Резюме методов
- _getCount() protectedИзвлекает и возвращает количество для одного поля в ассоциации
- _processAssociation() protectedОбновляет кэш счётчика для одной ассоциации
- _processAssociations() protectedИтерирует все ассоциации и обновляет кэши счётчиков.
- afterDelete() publicОбработчик afterDelete.
- afterSave() publicОбработчик afterSave.
- beforeSave() publicОбработчик beforeSave.
Детали методов
_getCount()source protected
_getCount( array $config , array $conditions )
Извлекает и возвращает количество для одного поля в ассоциации
Параметры
- массив
$config - Конфигурация кэша счётчика для одного поля
- массив
$conditions - Дополнительные условия, заданные для запроса
Возвращает
целое числоКоличество соотношений, соответствующих заданной конфигурации и условиям
_processAssociation()source protected
_processAssociation( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , Cake\ORM\Association $assoc , array $settings )
Обновляет кэш счётчика для одной ассоциации
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Сущность
-
Cake\ORM\Association$assoc - Объект ассоциации
- массив
$settings - Настройки для кэша счётчика для этой ассоциации
Исключение
RuntimeExceptionЕсли передан неверный вызываемый объект.
_processAssociations()source protected
_processAssociations( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Итерирует все ассоциации и обновляет кэши счётчиков.
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Сущность.
afterDelete()source public
afterDelete( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик afterDelete.
Обеспечивает обновление кэша счётчика при удалении записи.
Параметры
-
Cake\Event\Event$event - Событие afterDelete, которое было вызвано.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была удалена.
- ArrayObject
$options - Параметры для запроса
afterSave()source public
afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик afterSave.
Обеспечивает обновление кэша счётчика при создании или обновлении новой записи.
Параметры
-
Cake\Event\Event$event - Событие afterSave, которое было вызвано.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была сохранена.
- ArrayObject
$options - Параметры для запроса
beforeSave()source public
beforeSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )
Обработчик beforeSave.
Проверяет, если поле, которое должно быть проигнорировано, загрязнено
Параметры
-
Cake\Event\Event$event - Событие beforeSave, которое было вызвано
-
Cake\Datasource\EntityInterface$entity - Сущность, которая будет сохранена
- ArrayObject
$options - Параметры для запроса
Методы, унаследованные от Cake\ORM\Behavior
__construct()source public
__construct( Cake\ORM\Table $table , array $config = [] )
Конструктор
Объединяет конфигурацию с параметрами по умолчанию и хранит в свойстве config
Параметры
-
Cake\ORM\Table$table - Таблица, к которой прикреплено это поведение.
- массив
$configнеобязательно [] - Конфигурация для этого поведения.
_reflectionCache()source protected
_reflectionCache( )
Получает методы, реализованные этим поведением
Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _ будут проигнорированы, так же как и методы, объявленные в Cake\ORM\Behavior
Возвращает
массивИсключение
ReflectionException_resolveMethodAliases()source protected
_resolveMethodAliases( string $key , array $defaults , array $config )
Удаляет алиасы методов, которые в противном случае были бы дублированы конфигурацией пользователя.
Параметры
- строка
$key - Ключ для фильтрации.
- массив
$defaults - Маппинг методов по умолчанию.
- массив
$config - Настроенный маппинг методов.
Возвращает
массивСписок конфигурационных данных без дублирования.
getTable()source public
getTable( )
Получить экземпляр таблицы, к которому привязано это поведение.
Возвращает
Cake\ORM\TableЭкземпляр связанной таблицы.
implementedEvents()source public
implementedEvents( )
Получает обратные вызовы модели, которые интересуют это поведение.
Определяя один из методов обратного вызова, предполагается, что поведение заинтересовано в связанном событии.
Переопределите этот метод, если вам нужно добавить слушателей событий, отличных от стандартных. Или если вы хотите, чтобы ваше поведение слушало нестандартные события.
Возвращает
массивРеализация
Cake\Event\EventListenerInterface::implementedEvents() implementedFinders()source public
implementedFinders( )
implementedFinders
Предоставляет отображение alias->метод тех методов поиска, которые реализует поведение. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для вывода списка доступных методов. Примеры см. в ядрах поведений.
Возвращает
arrayВыбрасывает
ReflectionExceptionimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение alias->метод тех методов, которые реализует поведение. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для вывода списка доступных методов. Примеры см. в ядрах поведений.
Возвращает
arrayВыбрасывает
ReflectionExceptioninitialize()source public
initialize( array $config )
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родительский.
Параметры
- массив
$config - Настройки конфигурации, предоставленные этому поведению.
verifyConfig()source public
verifyConfig( )
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемый объект.
Выбрасывает
Cake\Core\Exception\Exceptionесли конфигурация недействительна
Используемые методы из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- строка
$key - Ключ для удаления.
Выбрасывает
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
_configRead()source protected
_configRead( string|null $key )
Читает ключ конфигурации.
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge = false )
Записывает ключ конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанное
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false Истина для рекурсивного слияния, «shallow» для простого слияния, ложь для перезаписи, по умолчанию ложь.
Выбрасывает
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
config()source public устаревший
config( string|array|null $key = null , mixed|null $value = null , boolean $merge = true )
Получение/установка конфигурации.
Использование
Чтение всей конфигурации:
$this->config();
Чтение определенного значения:
$this->config('key'); Чтение вложенного значения:
$this->config('some.nested.key'); Установка определенного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Устаревший
3.4.0 используйте setConfig()/getConfig() вместо этого.Параметры
- строка|массив|null
$keyнеобязательно null - Ключ для получения/установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
- булево
$mergeнеобязательно true - Выполнять рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию истинно.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value = null )
Слить предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка определенного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
Возвращает
$this
getConfig()source public
getConfig( string|null $key = null , mixed $default = null )
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
- строка|null
$keyнеобязательно null - Ключ для получения или null для всей конфигурации.
- смешанное
$defaultнеобязательно null - Возвращаемое значение, когда ключ не существует.
Возвращает
mixedЗначение конфигурации, которое читается.
setConfig()source public
setConfig( string|array $key , mixed|null $value = null , boolean $merge = true )
Устанавливает конфигурацию.
Использование
Установка определенного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
- булево
$mergeнеобязательно true - Выполнять рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию истинно.
Возвращает
$this
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Подробности свойств
© 2005–present The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.6/class-Cake.ORM.Behavior.CounterCacheBehavior.html