Класс 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\Table::addBehavior()
См.:
Cake\Event\EventManagerРасположение: ORM/Behavior.php
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray - Кэш методов рефлексии для поведений.
array - Экземпляр таблицы.
$_tableprotected
Унаследованные свойства
Краткое описание методов
- __construct() publicКонструктор
- _reflectionCache() protectedПолучение методов, реализованных этим поведением
- _resolveMethodAliases() protectedУдаление алиасов методов, которые в противном случае были бы дублированы конфигурацией пользовательского интерфейса.
- getTable() publicПолучение экземпляра таблицы, к которой привязано это поведение.
- implementedEvents() publicПолучение обратных вызовов модели, которыми интересуется это поведение.
- implementedFinders() publicimplementedFinders
- implementedMethods() publicimplementedMethods
- initialize() publicМетод подключения конструктора.
- verifyConfig() publicverifyConfig
Подробное описание методов
__construct()source public
__construct( Cake\ORM\Table $table , array $config [] )
Конструктор
Объединяет конфигурацию с конфигурацией по умолчанию и сохраняет её в свойстве config.
Параметры
-
Cake\ORM\Table$table - Таблица, к которой привязано это поведение.
- массив
$configнеобязательно [] - Конфигурация для этого поведения.
_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() implementedFinders()source public
implementedFinders( )
implementedFinders
Предоставляет отображение алиас->имя_метода для тех методов поиска, которые реализует поведение. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName().
Рекомендуется (хотя и не обязательно), определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. См. примеры в базовых поведениих.
Возвращает
массивimplementedMethods()source public
implementedMethods( )
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( )
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 static массив
Кэширование методов рефлексии для поведений.
Хранит отражённый метод + методы нахождения для каждого класса. Это предотвращает отражение одного и того же класса несколько раз в одном процессе.
[]
© 2005–2017 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.4/class-Cake.ORM.Behavior.html