Spec-Zone.ru › CakePHP 4.3

Класс 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 (EventInterface $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

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

  • $_config protected
    array<string, mixed>

    Конфигурация во время выполнения

  • $_configInitialized protected
    bool

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

  • $_defaultConfig protected
    array<string, mixed>

    Конфигурация по умолчанию

  • $_ignoreDirty protected
    array<string, array<string, bool>>

    Сохраняет поля, которые должны быть проигнорированы

  • $_reflectionCache protected static
    array<string, array>

    Кэш методов рефлексии для поведений.

  • $_table protected
    Cake\ORM\Table

    Экземпляр таблицы.

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

  • __construct() public

    Конструктор

  • _configDelete() protected

    Удаляет один ключ конфигурации.

  • _configRead() protected

    Читает ключ конфигурации.

  • _configWrite() protected

    Записывает ключ конфигурации.

  • _getCount() protected

    Получает и возвращает количество для одного поля в ассоциации

  • _processAssociation() protected

    Обновляет кэш счетчика для одной ассоциации

  • _processAssociations() protected

    Итерирует все ассоциации и обновляет кэши счетчиков.

  • _reflectionCache() protected

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

  • _resolveMethodAliases() protected

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

  • _shouldUpdateCount() protected

    Проверяет, нужно ли обновлять счет, учитывая набор условий.

  • afterDelete() public

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

  • afterSave() public

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

  • beforeSave() public

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

  • configShallow() public

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

  • getConfig() public

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

  • getConfigOrFail() public

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

  • getTable() public deprecated

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

  • implementedEvents() public

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

  • implementedFinders() public

    implementedFinders

  • implementedMethods() public

    implementedMethods

  • initialize() public

    Метод-обработчик конструктора.

  • setConfig() public

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

  • table() public

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

  • verifyConfig() public

    verifyConfig

END_OF_DOCUMENT_MARKER

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

__construct() public

__construct(Cake\ORM\Table $table, array<string, mixed> $config = [])

Конструктор

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

Параметры

Cake\ORM\Table $table

Таблица, к которой привязано это поведение.

array<string, mixed> $config необязательно

Конфигурация для этого поведения.

_configDelete() protected

_configDelete(string $key): void

Удаляет один ключ конфигурации.

Параметры

string $key

Ключ для удаления.

Возвращает

void

Исключения

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

_configRead() protected

_configRead(string|null $key): mixed

Считывает ключ конфигурации.

Параметры

string|null $key

Ключ для считывания.

Возвращает

mixed

_configWrite() protected

_configWrite(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void

Записывает ключ конфигурации.

Параметры

array<string, mixed>|string $key

Ключ, в который нужно записать.

mixed $value

Значение для записи.

string|bool $merge необязательно

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

Возвращает

void

Исключения

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

_getCount() protected

_getCount(array<string, mixed> $config, array $conditions): int

Получает и возвращает количество для одного поля в ассоциации.

Параметры

array<string, mixed> $config

Настройка кэша счетчиков для одного поля.

array $conditions

Дополнительные условия для запроса.

Возвращает

int

_processAssociation() protected

_processAssociation(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, Cake\ORM\Association $assoc, array $settings): void

Обновляет кэш счетчиков для одной ассоциации.

Параметры

Cake\Event\EventInterface $event

Экземпляр события.

Cake\Datasource\EntityInterface $entity

Сущность.

Cake\ORM\Association $assoc

Объект ассоциации.

array $settings

Настройки кэша счетчиков для этой ассоциации.

Возвращает

void

Исключения

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

_processAssociations() protected

_processAssociations(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity): void

Проходит по всем ассоциациям и обновляет кэши счетчиков.

Параметры

Cake\Event\EventInterface $event

Экземпляр события.

Cake\Datasource\EntityInterface $entity

Сущность.

Возвращает

void

_reflectionCache() protected

_reflectionCache(): array

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

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

Возвращает

array

Исключения

ReflectionException

_resolveMethodAliases() protected

_resolveMethodAliases(string $key, array<string, mixed> $defaults, array<string, mixed> $config): array

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

Параметры

string $key

Ключ для фильтрации.

array<string, mixed> $defaults

Сопоставления методов по умолчанию.

array<string, mixed> $config

Настройка сопоставлений методов.

Возвращает

array

_shouldUpdateCount() protected

_shouldUpdateCount(array $conditions): bool

Проверяет, нужно ли обновлять счетчик, на основе заданных условий.

Параметры

array $conditions

Условия для обновления счетчика.

Возвращает

bool

afterDelete() public

afterDelete(Cake\Event\EventInterface $event, Cake\Datasource\EntityInterface $entity, ArrayObject $options): void

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

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

Параметры

Cake\Event\EventInterface $event

Событие afterDelete.

Cake\Datasource\EntityInterface $entity

Удаленная сущность.

ArrayObject $options

Параметры запроса.

Возвращает

void

afterSave() public

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

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

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

Параметры

Cake\Event\EventInterface $event

Событие afterSave.

Cake\Datasource\EntityInterface $entity

Сохранённая сущность.

ArrayObject $options

Параметры запроса.

Возвращает

void

beforeSave() public

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

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

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

Параметры

Cake\Event\EventInterface $event

Событие beforeSave.

Cake\Datasource\EntityInterface $entity

Сущность, которая будет сохранена.

ArrayObject $options

Параметры запроса.

Возвращает

void

configShallow() public

configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this

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

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

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

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

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

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

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

Параметры

array<string, mixed>|string $key

Ключ для установки или массив настроек.

mixed|null $value необязательно

Значение для установки.

Возвращает

$this

getConfig() public

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

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

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

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

$this->getConfig();

Чтение определенного значения:

$this->getConfig('key');

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

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

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

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

Параметры

string|null $key необязательно

Ключ для получения или null для всей конфигурации.

mixed $default необязательно

Возвращаемое значение, если ключ не существует.

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

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

Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.

Параметры

string $key

Ключ для получения.

Возвращает

mixed

Исключения

InvalidArgumentException

getTable() public

getTable(): Cake\ORM\Table

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

Возвращает

Cake\ORM\Table

implementedEvents() public

implementedEvents(): array<string, mixed>

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

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

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

Возвращает

array<string, mixed>

implementedFinders() public

implementedFinders(): array

implementedFinders

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

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

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

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

Возвращает

array

Исключения

ReflectionException

implementedMethods() public

implementedMethods(): array

implementedMethods

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

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

В приведенном выше примере вызов $table->method() вызовет $behavior->method(), а вызов $table->aliasedMethod() вызовет $behavior->somethingElse()

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

Возвращает

array

Исключения

ReflectionException

initialize() public

initialize(array<string, mixed> $config): void

Метод-обработчик конструктора.

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

Параметры

array<string, mixed> $config

Настройки конфигурации, предоставленные этому поведению.

Возвращает

void

setConfig() public

setConfig(array<string, mixed>|string $key, mixed|null $value = null, bool $merge = true): $this

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

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

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

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

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

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

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

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

Параметры

array<string, mixed>|string $key

Ключ для установки или полный массив конфигураций.

mixed|null $value optional

Значение для установки.

bool $merge optional

Является ли необходимое рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.

Возвращает

$this

Исключения

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

table() public

table(): Cake\ORM\Table

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

Возвращает

Cake\ORM\Table

verifyConfig() public

verifyConfig(): void

verifyConfig

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

Возвращает

void

Исключения

Cake\Core\Exception\CakeException
если конфигурация недействительна

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

$_config protected

Конфигурация во время выполнения

Тип

array<string, mixed>

$_configInitialized protected

Установлена ли конфигурация для свойства config с параметрами по умолчанию

Тип

bool

$_defaultConfig protected

Конфигурация по умолчанию

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

Тип

array<string, mixed>

$_ignoreDirty protected

Хранит поля, которые должны быть пропущены

Тип

array<string, array<string, bool>>

$_reflectionCache protected static

Кэш методов рефлексии для поведений.

Хранит отраженные методы + методы поиска на каждый класс. Это предотвращает отражение одного и того же класса несколько раз в одном процессе.

Тип

array<string, array>

$_table protected

Экземпляр таблицы.

Тип

Cake\ORM\Table

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

Spec-Zone.ru

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