Spec-Zone.ru › CakePHP 3.6

Класс 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();
         }
    ]
]

При использовании лямбда-функции вы можете вернуть 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 )

Обработчик afterDelete.

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

Параметры

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 )

Обработчик afterSave.

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

Параметры

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 )

Обработчик beforeSave.

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

Параметры

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

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

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

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

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

Возвращает

array

Выбрасывает

ReflectionException

implementedMethods()source public

implementedMethods( )

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

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

Выбрасывает

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

Spec-Zone.ru

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