Класс 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();
}
]
] - Cake\ORM\Behavior реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\CounterCacheBehavior
Унаследованные свойства
Краткое описание методов
- _getCount() protectedИзвлекает и возвращает счётчик для одного поля в ассоциации
- _processAssociation() protectedОбновляет кэш счётчика для одной ассоциации
- _processAssociations() protectedИтерирует все ассоциации и обновляет кэши счётчиков.
- afterDelete() publicОбработчик afterDelete.
- afterSave() publicОбработчик afterSave.
Подробное описание методов
_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 - Сущность, которая была сохранена.
Методы, унаследованные от 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
Возвращает
массив_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 - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|строка
$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 - Ключ для получения/установки или полный массив настроек.
- mixed|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Выполнять рекурсивное объединение или перезапись существующей конфигурации, по умолчанию true.
Возвращает
mixedЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Исключения
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 - Ключ для установки или полный массив настроек.
- mixed|null
$valueнеобязательно null - Значение для установки.
Возвращает
$this Объект сам по себе.
© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.ORM.Behavior.CounterCacheBehavior.html