Класс 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
_getCount( array $config , array $conditions )
Извлекает и возвращает количество для одного поля в ассоциации
Параметры
- массив
$config - Настройка кэша счетчика для одного поля
- массив
$conditions - Дополнительные условия, заданные для запроса
Возвращает
integerЧисло отношений, соответствующих заданной конфигурации и условиям
_processAssociationисходный код 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исходный код protected
_processAssociations( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Перебрать все ассоциации и обновить кэши счетчиков.
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Сущность.
afterDeleteисходный код public
afterDelete( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Обработчик afterDelete.
Обеспечивает обновление кэша счетчика при удалении записи.
Параметры
-
Cake\Event\Event$event - Событие afterDelete, которое было запущено.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была удалена.
afterSaveисходный код public
afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Обработчик afterSave.
Обеспечивает обновление кэша счетчика при создании или обновлении новой записи.
Параметры
-
Cake\Event\Event$event - Событие afterSave, которое было запущено.
-
Cake\Datasource\EntityInterface$entity - Сущность, которая была сохранена.
Наследованные методы из Cake\ORM\Behavior
__constructисходный код public
__construct( Cake\ORM\Table $table , array $config [] )
Конструктор
Объединяет конфигурацию с параметрами по умолчанию и сохраняет в свойстве конфигурации
Параметры
-
Cake\ORM\Table$table - Таблица, к которой прикреплено это поведение.
- массив
$configнеобязательно [] - Настройка для данного поведения.
_reflectionCacheисходный код protected
_reflectionCache( )
Получает реализованные методы этим поведением
Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _ будут проигнорированы, как и методы, объявленные в Cake\ORM\Behavior
Возвращает
arrayмассив
_resolveMethodAliasesисходный код protected
_resolveMethodAliases( string $key , array $defaults , array $config )
Удаляет алиасы методов, которые в противном случае были бы дублированы конфигурацией пользовательского интерфейса.
Параметры
- строка
$key - Ключ для фильтра.
- массив
$defaults - Карта соответствия методов по умолчанию.
- массив
$config - Настраиваемая карта соответствия методов.
Возвращает
arrayСписок данных конфигурации без дублирования.
implementedEventsисходный код public
implementedEvents( )
Получает обратные вызовы модели, в которых заинтересовано данное поведение.
Определяя один из методов обратного вызова, предполагается, что поведение заинтересовано в соответствующем событии.
Переопределите этот метод, если вам необходимо добавить нестандартных обработчиков событий. Или если вы хотите, чтобы ваше поведение реагировало на нестандартные события.
Возвращает
arrayмассив
Реализация
Cake\Event\EventListenerInterface::implementedEvents() implementedFindersисходный код public
implementedFinders( )
implementedFinders
Предоставляет карту alias->имя_метода реализованных поисковиков. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
С приведенным выше примером вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры можно найти в ядрах поведений.
Возвращает
arrayмассив
implementedMethodsисходный код public
implementedMethods( )
implementedMethods
Предоставляет карту alias->имя_метода реализованных методов. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
С приведенным выше примером вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры можно найти в ядрах поведений.
Возвращает
arrayмассив
initializeисходный код public
initialize( array $config )
Метод инициализации.
Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родителя.
Параметры
- массив
$config - Параметры конфигурации, предоставленные для этого поведения.
verifyConfigисходный код public
verifyConfig( )
verifyConfig
Проверяет, содержат ли реализованные ключи значения, указывающие на вызываемый элемент.
Выбрасывает
Cake\Core\Exception\Exceptionесли конфигурация недействительна
Используемые методы из Cake\Core\InstanceConfigTrait
_configDeleteисходный код protected
_configDelete( string $key )
Удалить один ключ конфигурации
Параметры
- строка
$key - Ключ для удаления.
Выбрасывает
Cake\Core\Exception\Exceptionесли происходит попытка перезаписи существующей конфигурации
_configReadисходный код protected
_configRead( string|null $key )
Чтение переменной конфигурации
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
mixedсмешанное
_configWritesource protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false - True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Исключения
Cake\Core\Exception\Exceptionпри попытке перезаписи существующей конфигурации
configsource 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.
Возвращаемое значение
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallowsource 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 - Значение для установки.
Возвращаемое значение
mixedСам объект $this.
Свойства, унаследованные от Cake\ORM\Behavior
$_defaultConfigsource
protected массив
Значения конфигурации по умолчанию
Они объединяются с предоставленной пользователем конфигурацией, когда используется поведение.
[]
$_reflectionCachesource
protected static массив
Кэш отражения методов для поведений.
Хранит отраженные методы + методы поиска по классу. Это предотвращает отражение одного и того же класса несколько раз в одном процессе.
[]
Свойства, используемые из Cake\Core\InstanceConfigTrait
$_configInitializedsource
protected булево
Указание, уже ли свойство конфигурации было настроено со значениями по умолчанию
false
© 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.1/class-Cake.ORM.Behavior.CounterCacheBehavior.html