Spec-Zone.ru › CakePHP 3.7

Класс Behavior

Базовый класс для поведений.

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

Методы миксина

Поведения могут предоставлять функции типа миксин, объявляя публичные методы. Эти методы будут доступны в таблицах, к которым было добавлено поведение.

function doSomething($arg1, $arg2) {
  // do something
}

Будут вызваны так $table->doSomething($arg1, $arg2);.

Методы обратного вызова

Поведения могут реагировать на любые события, генерируемые в таблице. По умолчанию CakePHP предоставляет ряд событий жизненного цикла, за которыми могут следить ваши поведения:

  • beforeFind(Event $event, Query $query, ArrayObject $options, boolean $primary) Вызывается перед каждой операцией поиска. Прервав событие и предоставив значение возврата, вы можете полностью пропустить операцию поиска. Любые изменения, внесенные в экземпляр $query, сохранятся для дальнейшего поиска. Параметр $primary указывает, является ли это основным запросом или связанным запросом.

  • buildValidator(Event $event, Validator $validator, string $name) Вызывается, когда объект валидатора, идентифицированный по имени $name, создается. Вы можете использовать этот метод обратного вызова для добавления правил валидации или поставщиков валидации.

  • buildRules(Event $event, RulesChecker $rules) Вызывается, когда создается объект проверки правил для таблицы. Вы можете использовать этот метод обратного вызова для добавления дополнительных правил.

  • beforeRules(Event $event, EntityInterface $entity, ArrayObject $options, $operation) Вызывается перед проверкой правил для сущности с помощью правила проверяющего. Прервав это событие, вы можете вернуть окончательное значение операции проверки правил.

  • afterRules(Event $event, EntityInterface $entity, ArrayObject $options, bool $result, $operation) Вызывается после проверки правил для сущности. Прервав это событие, вы можете вернуть окончательное значение операции проверки правил.

  • beforeSave(Event $event, EntityInterface $entity, ArrayObject $options) Вызывается перед сохранением каждой сущности. Прерывание этого события прервет операцию сохранения. Когда событие прерывается, результат события возвращается.

  • afterSave(Event $event, EntityInterface $entity, ArrayObject $options) Вызывается после сохранения сущности.

  • beforeDelete(Event $event, EntityInterface $entity, ArrayObject $options) Вызывается перед удалением сущности. Прервав это событие, вы прервете операцию удаления.

  • afterDelete(Event $event, EntityInterface $entity, ArrayObject $options) Вызывается после удаления сущности.

В дополнение к основным событиям, поведения могут реагировать на любые события, генерируемые вашими классами таблиц, включая настраиваемые события, специфичные для приложения.

Вы можете установить приоритет методов обратного вызова поведения, используя параметр priority при присоединении поведения. Это установит приоритет для всех методов обратного вызова, предоставляемых поведением.

Методы поиска

Поведения могут предоставлять методы поиска, которые подключаются к методу find() таблицы. Настраиваемые методы поиска — отличный способ предоставить предварительно заданные запросы, относящиеся к вашему поведению. Например, поведение SluggableBehavior может предоставить метод поиска find('slugged'). Методы поиска поведения реализуются так же, как и другие методы поиска. Любой метод, начинающийся с find будет настроен как метод поиска. Ваши методы поиска должны ожидать следующие аргументы:

findSlugged(Query $query, array $options)
Cake\ORM\Behavior реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait

Непосредственные подклассы

  • Cake\ORM\Behavior\CounterCacheBehavior
  • Cake\ORM\Behavior\TimestampBehavior
  • Cake\ORM\Behavior\TranslateBehavior
  • Cake\ORM\Behavior\TreeBehavior
Пространство имен: Cake\ORM
См.: \Cake\ORM\Table::addBehavior()
См.: Cake\Event\EventManager
Расположение: ORM/Behavior.php

Резюме свойств

  • $_defaultConfig protected
    array
    Конфигурация по умолчанию
  • $_reflectionCache protected static
    array
    Кэш отражения методов для поведений.
  • $_table protected
    Cake\ORM\Table
    Экземпляр таблицы.

Унаследованные свойства

  • _config, _configInitialized

Резюме методов

  • __construct() public
    Конструктор
  • _reflectionCache() protected
    Получение методов, реализованных этим поведением
  • _resolveMethodAliases() protected
    Удаление алиасов методов, которые в противном случае были бы дублированы пользовательской конфигурацией.
  • getTable() public
    Получение экземпляра таблицы, к которой привязано данное поведение.
  • implementedEvents() public
    Получение методов обратного вызова модели, которыми интересуется это поведение.
  • implementedFinders() public
    implementedFinders
  • implementedMethods() public
    implementedMethods
  • initialize() public
    Метод подключения конструктора.
  • verifyConfig() public
    verifyConfig

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

__construct()source public

__construct( Cake\ORM\Table $table , array $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 дочерних классов, чтобы не нужно было использовать рефлексию для получения списка доступных методов. См. примеры в стандартных поведенческих классах.

Возвращает

массив

Исключения

ReflectionException

implementedMethods()source public

implementedMethods( )

implementedMethods

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

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

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

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

Возвращает

массив

Исключения

ReflectionException
END_OF_DOCUMENT_MARKER

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

Возвращает

смешанный тип

_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
При попытке установить недопустимый ключ.

Подробности свойств

$_defaultConfigsource

protected массив

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

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

[]

$_reflectionCachesource

protected статическое массив

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

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

[]

$_tablesource

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

Spec-Zone.ru

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