Spec-Zone.ru › CakePHP 3.8

Класс CounterCacheBehavior

Поведение CounterCache

Позволяет моделям кэшировать количество соединений в заданном отношении.

Примеры с моделью Post, относящейся к модели User

Обычный кэш счётчика

[
    'Users' => [
        'post_count'
    ]
]

Кэш счётчика со scope

[
    'Users' => [
        'posts_published' => [
            'conditions' => [
                'published' => true
            ]
        ]
    ]
]

Кэш счётчика с использованием пользовательского find

[
    '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();
         }
    ]
]

При использовании лямбда-функции можно вернуть false для отключения обновления значения счётчика для текущей операции.

Игнорировать обновление поля, если оно изменено

[
    'Users' => [
        'posts_published' => [
            'ignoreDirty' => true
        ]
    ]
]

Вы можете полностью отключить обновления счётчика, передав опцию ignoreCounterCache в операцию сохранения:

$this->Articles->save($article, ['ignoreCounterCache' => true]);
Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
Расширено Cake\ORM\Behavior\CounterCacheBehavior
Пространство имён: Cake\ORM\Behavior
Расположение: ORM/Behavior/CounterCacheBehavior.php

Краткое описание свойств

  • $_ignoreDirty protected
    array
    Хранит поля, которые должны быть проигнорированы

Унаследованные свойства

  • _defaultConfig, _reflectionCache, _table _config, _configInitialized

Краткое описание методов

  • _getCount() protected
    Извлекает и возвращает количество для одного поля в ассоциации
  • _processAssociation() protected
    Обновляет кэш счётчика для одной ассоциации
  • _processAssociations() protected
    Итерирует все ассоциации и обновляет кэши счётчиков.
  • afterDelete() public
    Обработчик после удаления.
  • afterSave() public
    Обработчик после сохранения.
  • beforeSave() public
    Обработчик перед сохранением.

Подробное описание методов

_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
Настройки для кэша счётчика для этой ассоциации

Исключения

RuntimeException
Если передан недопустимый вызываемый объект.

_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 , ArrayObject $options )

Обработчик после удаления.

Обеспечивает обновление кэша счётчика при удалении записи.

Параметры

Cake\Event\Event $event
Событие после удаления, которое было запущено.
Cake\Datasource\EntityInterface $entity
Сущность, которая была удалена.
ArrayObject $options
Параметры запроса

afterSave()source public

afterSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )

Обработчик после сохранения.

Обеспечивает обновление кэша счётчика при создании или обновлении новой записи.

Параметры

Cake\Event\Event $event
Событие после сохранения, которое было запущено.
Cake\Datasource\EntityInterface $entity
Сущность, которая была сохранена.
ArrayObject $options
Параметры запроса

beforeSave()source public

beforeSave( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity , ArrayObject $options )

Обработчик перед сохранением.

Проверка, если поле, которое должно быть проигнорировано, изменено

Параметры

Cake\Event\Event $event
Событие перед сохранением, которое было запущено
Cake\Datasource\EntityInterface $entity
Сущность, которая будет сохранена
ArrayObject $options
Параметры запроса

Методы, унаследованные от Cake\ORM\Behavior

__construct()source public

__construct( Cake\ORM\Table $table , array $config = [] )

Конструктор

Объединяет конфигурацию со значением по умолчанию и хранит её в свойстве config

Параметры

Cake\ORM\Table $table
Таблица, к которой прикреплено это поведение.
массив $config optional []
Конфигурация для этого поведения.

_reflectionCache()source protected

_reflectionCache( )

Получение методов, реализованных этим поведением

Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _ будут проигнорированы, также как и методы, объявленные в Cake\ORM\Behavior

Возвращает

массив

Исключения

ReflectionException

_resolveMethodAliases()source protected

_resolveMethodAliases( string $key , array $defaults , array $config )

Удаляет алиасированные методы, которые в противном случае будут дублироваться пользовательской конфигурацией.

Параметры

строка $key
Ключ для фильтрации.
массив $defaults
Карта методов по умолчанию.
массив $config
Настроенные карты методов.

Возвращает

массив
Список конфигурационных данных без дублирования.

getTable()source public

getTable( )

Получение экземпляра таблицы, к которой привязано это поведение.

Возвращает

Cake\ORM\Table
Экземпляр привязанной таблицы.

implementedEvents()source public

implementedEvents( )

Получение обращений к моделям, к которым проявляет интерес это поведение.

Через определение одного из методов обратного вызова подразумевается, что поведение заинтересовано в соответствующем событии.

Переопределите этот метод, если вам нужно добавить слушателей событий, не являющихся стандартными. Или если вы хотите, чтобы ваше поведение отслеживало нестандартные события.

Возвращает

массив

Реализация

Cake\Event\EventListenerInterface::implementedEvents()
END_OF_DOCUMENT_MARKER

implementedFinders()source public

implementedFinders( )

Реализованные поискеры

Предоставляет отображение alias->метод, которое показывает, какие поискеры реализует поведение. Пример:

[
   'this' => 'findThis',
   'alias' => 'findMethodName'
 ]

В приведённом примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()

Рекомендуется (хотя и не обязательно) определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для вывода списка доступных методов. Смотрите примеры в основных поведении.

Возвращает

array

Вызывает исключение

ReflectionException

implementedMethods()source public

implementedMethods( )

Реализованные методы

Предоставляет отображение alias->метод, которое показывает, какие методы реализует поведение. Пример:

[
   'method' => 'method',
   'aliasedmethod' => 'somethingElse'
 ]

В приведённом примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()

Рекомендуется (хотя и не обязательно) определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для вывода списка доступных методов. Смотрите примеры в основных поведении.

Возвращает

array

Вызывает исключение

ReflectionException

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
Ключ для записи.
смешанный $value
Значение для записи.
логическое значение или строка $merge опционально false

True для рекурсивного объединения, 'shallow' для простого объединения, false для перезаписи, по умолчанию false.

Вызывает исключение

Cake\Core\Exception\Exception
если попытка перезаписать существующую конфигурацию

config()source public deprecated

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']);

Устарело

3.4.0 используйте setConfig()/getConfig() вместо этого.

Параметры

строка|массив|null $key опционально null
Ключ для получения/установки или полный массив настроек.
смешанный|null $value опционально null
Значение для установки.
логическое значение $merge опционально true
Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает

mixed
Значение конфигурации, которое читается, или сам объект при операциях записи.

Вызывает исключение

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

configShallow()source public

configShallow( string|array $key , mixed|null $value = null )

Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.

Установка конкретного значения:

$this->configShallow('key', $value);

Установка вложенного значения:

$this->configShallow('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->configShallow(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки или полный массив конфигурации.
смешанный|null $value опционально null
Значение для установки.

Возвращает


$this

getConfig()source public

getConfig( string|null $key = null , mixed $default = null )

Возвращает конфигурацию.

Использование

Чтение всей конфигурации:

$this->getConfig();

Чтение конкретного значения:

$this->getConfig('key');

Чтение вложенного значения:

$this->getConfig('some.nested.key');

Чтение со значением по умолчанию:

$this->getConfig('some-key', 'default-value');

Параметры

строка или null $key опционально null
Ключ для получения или null для всей конфигурации.
смешанный $default опционально null
Возвращаемое значение, когда ключ не существует.

Возвращает

mixed
Данные конфигурации по указанному ключу или null, если ключ не существует.

setConfig()source public

setConfig( string|array $key , mixed|null $value = null , boolean $merge = true )

Устанавливает конфигурацию.

Использование

Установка конкретного значения:

$this->setConfig('key', $value);

Установка вложенного значения:

$this->setConfig('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->setConfig(['one' => 'value', 'another' => 'value']);

Параметры

строка или массив $key
Ключ для установки или полный массив конфигурации.
смешанный|null $value опционально null
Значение для установки.
логическое значение $merge опционально true
Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает


$this

Вызывает исключение

Cake\Core\Exception\Exception
При попытке установить недопустимый ключ.

Подробности свойств

$_ignoreDirtysource

protected массив

Хранит поля, которые следует игнорировать

[]

© 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/3.8/class-Cake.ORM.Behavior.CounterCacheBehavior.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API