Spec-Zone.ru › CakePHP 3.1

Класс 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();
         }
    ]
]
Cake\ORM\Behavior реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait
Extended by Cake\ORM\Behavior\CounterCacheBehavior
Пространство имён: Cake\ORM\Behavior
Расположено в ORM/Behavior/CounterCacheBehavior.php

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

_getCountисходный код protected

_getCount( array $config , array $conditions )

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

Параметры

массив $config
Настройка кэша счетчика для одного поля
массив $conditions
Дополнительные условия, заданные для запроса

Возвращает

integer
Число отношений, соответствующих заданной конфигурации и условиям

_processAssociationисходный код 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
Настройки кэша счетчика для этой ассоциации

_processAssociationsисходный код protected

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

Перебрать все ассоциации и обновить кэши счетчиков.

Параметры

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

afterDeleteисходный код public

afterDelete( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )

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

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

Параметры

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

afterSaveисходный код public

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

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

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

Параметры

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

Наследованные методы из Cake\ORM\Behavior

__constructисходный код public

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

Конструктор

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

Параметры

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

_reflectionCacheисходный код protected

_reflectionCache( )

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

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

Возвращает

array
массив

_resolveMethodAliasesисходный код protected

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

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

Параметры

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

Возвращает

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

implementedEventsисходный код public

implementedEvents( )

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

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

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

Возвращает

array
массив

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

implementedFindersисходный код public

implementedFinders( )

implementedFinders

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

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

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

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

Возвращает

array
массив

implementedMethodsисходный код public

implementedMethods( )

implementedMethods

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

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

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

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

Возвращает

array
массив

initializeисходный код public

initialize( array $config )

Метод инициализации.

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

Параметры

массив $config
Параметры конфигурации, предоставленные для этого поведения.

verifyConfigисходный код public

verifyConfig( )

verifyConfig

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

Выбрасывает

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

Используемые методы из Cake\Core\InstanceConfigTrait

_configDeleteисходный код protected

_configDelete( string $key )

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

Параметры

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

Выбрасывает

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

_configReadисходный код protected

_configRead( string|null $key )

Чтение переменной конфигурации

Параметры

строка|null $key
Ключ для чтения.

Возвращает

mixed
смешанное
END_OF_DOCUMENT_MARKER

_configWritesource protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Запись переменной конфигурации

Параметры

строка|массив $key
Ключ для записи.
смешанный $value
Значение для записи.
булево|строка $merge необязательно false
True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.

Исключения

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

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

Параметры

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

Возвращаемое значение

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

Исключения

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

configShallowsource public

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

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

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

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

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

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

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

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

Параметры

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

Возвращаемое значение

mixed
Сам объект $this.

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

$_defaultConfigsource

protected массив

Значения конфигурации по умолчанию

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

[]

$_reflectionCachesource

protected static массив

Кэш отражения методов для поведений.

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

[]

$_tablesource

protected Cake\ORM\Table

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

Свойства, используемые из Cake\Core\InstanceConfigTrait

$_configsource

protected массив

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

[]

$_configInitializedsource

protected булево

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

false

© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.ORM.Behavior.CounterCacheBehavior.html

Spec-Zone.ru

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