Класс 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<string, mixed>Конфигурация во время выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена по умолчанию
- $_defaultConfig protected
array<string, mixed>Конфигурация по умолчанию
- $_ignoreDirty protected
array<string, array<string, bool>>Сохраняет поля, которые должны быть проигнорированы
- $_reflectionCache protected static
array<string, 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<string, mixed> $config = [])
Конструктор
Объединяет конфигурацию с настройками по умолчанию и сохраняет в свойстве config.
Параметры
-
Cake\ORM\Table$table Таблица, к которой привязано это поведение.
-
array<string, mixed>$config необязательно Конфигурация для этого поведения.
_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(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает ключ конфигурации.
Параметры
-
array<string, mixed>|string$key Ключ, в который нужно записать.
-
mixed$value Значение для записи.
-
string|bool$merge необязательно True для рекурсивного слияния, 'shallow' — для простого слияния, false — для перезаписи. По умолчанию false.
Возвращает
voidИсключения
Cake\Core\Exception\CakeExceptionесли попытка перезаписать существующую конфигурацию
_getCount() protected
_getCount(array<string, mixed> $config, array $conditions): int
Получает и возвращает количество для одного поля в ассоциации.
Параметры
-
array<string, mixed>$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<string, mixed> $defaults, array<string, mixed> $config): array
Удаляет алиасированные методы, которые в противном случае будут дублироваться конфигурацией пользователя.
Параметры
-
string$key Ключ для фильтрации.
-
array<string, mixed>$defaults Сопоставления методов по умолчанию.
-
array<string, mixed>$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(array<string, mixed>|string $key, mixed|null $value = null): $this
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которое выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка определенного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$key Ключ для установки или массив настроек.
-
mixed|null$value необязательно Значение для установки.
Возвращает
$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 необязательно Ключ для получения или null для всей конфигурации.
-
mixed$default необязательно Возвращаемое значение, если ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для указанного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedИсключения
InvalidArgumentExceptiongetTable() public
getTable(): Cake\ORM\Table
Получает экземпляр таблицы, к которому привязано это поведение.
Возвращает
Cake\ORM\TableimplementedEvents() public
implementedEvents(): array<string, mixed>
Получает обратные вызовы модели, которыми интересуется это поведение.
Определяя один из методов обратного вызова, поведение предполагается заинтересованным в соответствующем событии.
Переопределите этот метод, если вам нужно добавить нестандартные обработчики событий. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.
Возвращает
array<string, mixed>implementedFinders() 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<string, mixed> $config): void
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы не переопределять конструктор и вызывать родителя.
Параметры
-
array<string, mixed>$config Настройки конфигурации, предоставленные этому поведению.
Возвращает
voidsetConfig() public
setConfig(array<string, mixed>|string $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']);
Параметры
-
array<string, mixed>|string$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<string, mixed>$_configInitialized protected
Установлена ли конфигурация для свойства config с параметрами по умолчанию
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию
Они объединяются с предоставленной пользователем конфигурацией при использовании поведения.
Тип
array<string, mixed>$_ignoreDirty protected
Хранит поля, которые должны быть пропущены
Тип
array<string, array<string, bool>>$_reflectionCache protected static
Кэш методов рефлексии для поведений.
Хранит отраженные методы + методы поиска на каждый класс. Это предотвращает отражение одного и того же класса несколько раз в одном процессе.
Тип
array<string, 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.4/class-Cake.ORM.Behavior.CounterCacheBehavior.html