Spec-Zone.ru › CakePHP 3.7

Класс CounterCacheBehavior

Поведение CounterCache

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

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

Регулярный кэш счётчика

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

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

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

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

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

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

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

$this->Articles->save($article, ['ignoreCounterCache' => true]);
Cake\ORM\Behavior implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
Extended by 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
    Обработчик 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
Настройки кэша счётчика для этой ассоциации

Выбрасывает

Исключение 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
Событие afterDelete, которое было запущено.
Cake\Datasource\EntityInterface $entity
Сущность, которая была удалена.
ArrayObject $options
Опции для запроса

afterSave()source public

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

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

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

Параметры

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

beforeSave()source public

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

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

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

Параметры

Cake\Event\Event $event
Событие beforeSave, которое было запущено
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 необязательно []
Конфигурация для этого поведения.

_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()

implementedFinders()source public

implementedFinders( )

implementedFinders

Предоставляет отображение «псевдоним»-«имя_метода» реализованных методов поиска. Пример:

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

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

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

Возвращает

array

Выбрасывает

ReflectionException

implementedMethods()source public

implementedMethods( )

implementedMethods

Предоставляет отображение «псевдоним»-«имя_метода» реализованных методов. Пример:

[
   '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

Истинно для рекурсивного слияния, «мелкое» для простого слияния, ложно для перезаписи, по умолчанию ложно.

Выбрасывает

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

Устарело

3.4.0 использовать setConfig()/getConfig() вместо.

Параметры

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

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
Флаг рекурсивного слияния или перезаписи существующей конфигурации, по умолчанию истинно.

Возвращает


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

Spec-Zone.ru

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