Класс 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();
}
]
] Пропустить обновление поля, если оно некорректно
[
'Users' => [
'posts_published' => [
'ignoreDirty' => 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 - Настройки кэширования счетчика для данной ассоциации
_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 )
Обработчик afterDelete.
Убеждается, что кэш счетчика обновляется при удалении записи.
Параметры
-
Cake\Event\Event$event - Событие afterDelete, которое было сгенерировано.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была удалена.
afterSave()source public
afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Обработчик afterSave.
Убеждается, что кэш счетчика обновляется при создании или обновлении новой записи.
Параметры
-
Cake\Event\Event$event - Событие afterSave, которое было сгенерировано.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была сохранена.
beforeSave()source public
beforeSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Обработчик beforeSave.
Проверяет, если поле, которое должно быть проигнорировано, некорректно
Параметры
-
Cake\Event\Event$event - Событие beforeSave, которое было сгенерировано
-
Cake\Datasource\EntityInterface$entity - Сущность, которая будет сохранена
Методы, унаследованные от Cake\ORM\Behavior
__construct()source public
__construct( Cake\ORM\Table $table , array $config [] )
Конструктор
Объединяет конфигурацию с значением по умолчанию и хранит в свойстве конфигурации
Параметры
-
Cake\ORM\Table$table - Таблица, к которой прикреплено это поведение.
- массив
$configoptional [] - Конфигурация для этого поведения.
_reflectionCache()source protected
_reflectionCache( )
Получает методы, реализованные этим поведением
Использует метод implementedEvents(), чтобы исключить методы обратного вызова. Методы, начинающиеся с _ будут проигнорированы, как и методы, объявленные в Cake\ORM\Behavior
Возвращаемое значение
массив_resolveMethodAliases()source protected
_resolveMethodAliases( string $key , array $defaults , array $config )
Удаляет алиасы методов, которые в противном случае были бы дублированы конфигурацией пользователя.
Параметры
- строка
$key - Ключ для фильтрации.
- массив
$defaults - Стандартные отображения методов.
- массив
$config - Настроенные отображения методов.
Возвращаемое значение
массивСписок конфигурационных данных без дублирования.
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 дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Смотрите примеры в основных поведенческих моделях
Возвращаемое значение
массивimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение alias->имя_метода, которые реализует поведение. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном выше примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, хотя и необязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Смотрите примеры в основных поведенческих моделях
Возвращаемое значение
массивinitialize()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 - Ключ для чтения.
Возвращает
смешанный_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записать переменную конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- логическое|строка
$mergeопционально false True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Исключения
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']);
Параметры
- строка|массив|null
$keyопционально null - Ключ для получения/установки или полный массив конфигураций.
- смешанный|null
$valueопционально null - Значение для установки.
- логическое
$mergeопционально true - Производить ли рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.
Возвращает
смешанныйЗначение конфигурации, которое читается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить неверный ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value null )
Объединить предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка определенного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанный|null
$valueопционально null - Значение для установки.
Возвращает
$this Сам объект.
Подробное описание свойств
© 2005–2017 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.3/class-Cake.ORM.Behavior.CounterCacheBehavior.html