Spec-Zone.ru › CakePHP 3.5

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

Пропустить обновление поля, если оно изменено

[
    '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 optional []
Конфигурация для этого поведения.

_reflectionCache()source protected

_reflectionCache( )

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

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

Возвращает

массив

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

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

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

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

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

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

Возвращает

массив

implementedMethods()source public

implementedMethods( )

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

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

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

Проверка конфигурации

Проверяет, что реализованные ключи содержат значения, указывающие на вызываемый метод.

Использует

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
Ключ для чтения.

Возвращает

смешанное

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

Возвращает

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

Использует

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
Возвращаемое значение, когда ключ не существует.

Возвращает

смешанное
Значение конфигурации, которое считывается.

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

Spec-Zone.ru

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