Класс 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 (EventInterface $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]);
Краткое описание свойств
- $_config protected
arrayКонфигурация во время выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена по умолчанию
- $_defaultConfig protected
arrayКонфигурация по умолчанию
- $_ignoreDirty protected
arrayСохраняет поля, которые должны быть проигнорированы
- $_reflectionCache protected static
arrayКэш методов рефлексии для поведений.
- $_table protected
Cake\ORM\TableЭкземпляр таблицы.
Краткое описание методов
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет один ключ конфигурации.
-
_configRead() protected
Читает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_getCount() protected
Получает и возвращает количество для одного поля в ассоциации
-
_processAssociation() protected
Обновляет кэш счетчика для одной ассоциации
-
_processAssociations() protected
Итерирует все ассоциации и обновляет кэши счетчиков.
-
_reflectionCache() protected
Получает методы, реализованные этим поведением
-
_resolveMethodAliases() protected
Удаляет алиасы методов, которые в противном случае были бы дублированы пользовательской конфигурацией.
-
_shouldUpdateCount() protected
Проверяет, нужно ли обновлять счет, учитывая набор условий.
-
afterDelete() public
Обработчик afterDelete.
-
afterSave() public
Обработчик afterSave.
-
beforeSave() public
Обработчик beforeSave.
-
configShallow() public
Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от
config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для данного ключа.
-
getTable() public deprecated
Получает экземпляр таблицы, к которому привязано это поведение.
-
implementedEvents() public
Получает обратные вызовы модели, которые интересуют это поведение.
-
implementedFinders() public
implementedFinders
-
implementedMethods() public
implementedMethods
-
initialize() public
Метод-обработчик конструктора.
-
setConfig() public
Устанавливает конфигурацию.
-
table() public
Получает экземпляр таблицы, к которому привязано это поведение.
-
verifyConfig() public
verifyConfig
Подробное описание методов
__construct() public
__construct(Cake\ORM\Table $table, array $config = [])
Конструктор
Объединяет конфигурацию с настройками по умолчанию и сохраняет результат в свойстве config
Параметры
-
Cake\ORM\Table$table Таблица, к которой привязано это поведение.
-
array$config optional Конфигурация для этого поведения.
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Параметры
-
string$key Ключ для удаления.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписи существующей конфигурации
_configRead() protected
_configRead(string|null $key): mixed
Читает ключ конфигурации.
Параметры
-
string|null$key Ключ для чтения.
Возвращает
mixed_configWrite() protected
_configWrite(string|array $key, mixed $value, bool|string $merge = false): void
Записывает ключ конфигурации.
Параметры
-
string|array$key Ключ для записи.
-
mixed$value Значение для записи.
-
bool|string$merge optional Истина для рекурсивного слияния, 'shallow' для простого слияния, ложь для перезаписи, по умолчанию ложь.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionпри попытке перезаписи существующей конфигурации
_getCount() protected
_getCount(array $config, array $conditions): int
Извлекает и возвращает количество для одного поля в ассоциации
Параметры
-
array$config Конфигурация кэша счетчиков для одного поля
-
array$conditions Дополнительные условия для запроса
Возвращает
int_processAssociation() protected
_processAssociation(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, Cake\ORM\Association $assoc, array $settings): void
Обновляет кэш счетчиков для одной ассоциации
Параметры
-
Cake\Event\EventInterface$event Экземпляр события.
-
Cake\Datasource\EntityInterface$entity Сущность
-
Cake\ORM\Association$assoc Объект ассоциации
-
array$settings Настройки кэша счетчиков для данной ассоциации
Возвращает
voidИсключения
RuntimeExceptionЕсли передан некорректный вызываемый объект.
_processAssociations() protected
_processAssociations(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity): void
Перебирает все ассоциации и обновляет кэши счетчиков.
Параметры
-
Cake\Event\EventInterface$event Экземпляр события.
-
Cake\Datasource\EntityInterface$entity Сущность.
Возвращает
void_reflectionCache() protected
_reflectionCache(): array
Получает методы, реализованные этим поведением
Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _, будут проигнорированы, как и методы, объявленные в Cake\ORM\Behavior
Возвращает
arrayИсключения
ReflectionException_resolveMethodAliases() protected
_resolveMethodAliases(string $key, array $defaults, array $config): array
Удаляет алиасы методов, которые в противном случае были бы дублированы конфигурацией пользователя.
Параметры
-
string$key Ключ для фильтрации.
-
array$defaults Настройки методов по умолчанию.
-
array$config Настройки методов, настроенные пользователем.
Возвращает
array_shouldUpdateCount() protected
_shouldUpdateCount(array $conditions): bool
Проверяет, нужно ли обновлять счетчик, исходя из набора условий.
Параметры
-
array$conditions Условия для обновления счетчика.
Возвращает
boolafterDelete() public
afterDelete(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void
Обработчик после удаления.
Обеспечивает обновление кэша счетчика при удалении записи.
Параметры
-
Cake\Event\EventInterface$event Событие afterDelete, которое было запущено.
-
Cake\Datasource\EntityInterface$entity Сущность, которая была удалена.
-
ArrayObject$options Параметры запроса
Возвращает
voidafterSave() public
afterSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void
Обработчик после сохранения.
Обеспечивает обновление кэша счетчика при создании или обновлении новой записи.
Параметры
-
Cake\Event\EventInterface$event Событие afterSave, которое было запущено.
-
Cake\Datasource\EntityInterface$entity Сущность, которая была сохранена.
-
ArrayObject$options Параметры запроса
Возвращает
voidbeforeSave() public
beforeSave(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void
Обработчик перед сохранением.
Проверяет, если поле, которое должно быть проигнорировано, изменено.
Параметры
-
Cake\Event\EventInterface$event Событие beforeSave, которое было запущено
-
Cake\Datasource\EntityInterface$entity Сущность, которая будет сохранена
-
ArrayObject$options Параметры запроса
Возвращает
voidconfigShallow() public
configShallow(string|array $key, mixed|null $value = null): $this
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
Возвращает
$thisgetConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key optional Ключ для получения или null для всей конфигурации.
-
mixed$default optional Значение по умолчанию, если ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для указанного ключа.
Значение конфигурации для данного ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedИсключения
InvalidArgumentExceptiongetTable() public
getTable(): Cake\ORM\Table
Возвращает экземпляр таблицы, к которой привязано это поведение.
Возвращает
Cake\ORM\TableimplementedEvents() public
implementedEvents(): array
Получает обратные вызовы модели, которыми интересуется это поведение.
Определяя один из методов обратного вызова, поведение предполагается заинтересованным в соответствующем событии.
Переопределите этот метод, если вам нужно добавить нестандартные обработчики событий. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.
Возвращает
arrayimplementedFinders() public
implementedFinders(): array
implementedFinders
Предоставляет отображение «псевдоним» -> «имя_метода», которое показывает, какие методы поиска реализует поведение. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном выше примере вызов $table->find('this') вызовет $behavior->findThis(), а вызов $table->find('alias') вызовет $behavior->findMethodName()
Рекомендуется (хотя и необязательно), определить implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Смотрите примеры в основных поведении
Возвращает
arrayИсключения
ReflectionExceptionimplementedMethods() public
implementedMethods(): array
implementedMethods
Предоставляет отображение «псевдоним» -> «имя_метода», которое показывает, какие методы реализует поведение. Пример:
[ 'method' => 'method', 'aliasedMethod' => 'somethingElse' ]
В приведенном выше примере вызов $table->method() вызовет $behavior->method(), а вызов $table->aliasedMethod() вызовет $behavior->somethingElse()
Рекомендуется (хотя и необязательно), определить implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Смотрите примеры в основных поведении
Возвращает
arrayИсключения
ReflectionExceptioninitialize() public
initialize(array $config): void
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы не переопределять конструктор и вызывать родителя.
Параметры
-
array$config Настройки конфигурации, предоставленные этому поведению.
Возвращает
voidsetConfig() public
setConfig(string|array $key, mixed|null $value = null, bool $merge = true): $this
Устанавливает конфигурацию.
Использование
Устанавливает конкретное значение:
$this->setConfig('key', $value); Устанавливает вложенное значение:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или полный массив конфигураций.
-
mixed|null$value optional Значение для установки.
-
bool$merge optional Является ли необходимое рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.
Возвращает
$thisИсключения
Cake\Core\Exception\CakeExceptionПри попытке установить недопустимый ключ.
table() public
table(): Cake\ORM\Table
Получает экземпляр таблицы, к которой привязано это поведение.
Возвращает
Cake\ORM\TableverifyConfig() public
verifyConfig(): void
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые методы.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionесли конфигурация недействительна
Подробное описание свойств
$_config protected
Конфигурация во время выполнения
Тип
array$_configInitialized protected
Установлена ли конфигурация для свойства config с параметрами по умолчанию
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию
Они объединяются с предоставленной пользователем конфигурацией при использовании поведения.
Тип
array$_ignoreDirty protected
Хранит поля, которые должны быть пропущены
Тип
array$_reflectionCache protected static
Кэш методов рефлексии для поведений.
Хранит отраженные методы + методы поиска на каждый класс. Это предотвращает отражение одного и того же класса несколько раз в одном процессе.
Тип
array$_table protected
Экземпляр таблицы.
Тип
Cake\ORM\Table
© 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/4.2/class-Cake.ORM.Behavior.CounterCacheBehavior.html