Класс 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Удаление алиасов методов, которые в противном случае были бы дублированы конфигурацией пользовательского интерфейса.
- 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 - Настроенные сопоставления методов.
Возвращает
массивСписок конфигурации без дубликатов.
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( )
Проверка конфигурации
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые функции.
Исключения
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 - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- логическое значение|строка
$mergeопционально false Истинное значение для рекурсивного слияния, 'shallow' для простого слияния, ложное значение для перезаписи, по умолчанию ложное.
Исключения
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']);
Параметры
- строка|массив|null
$keyопционально null - Ключ для получения/установки или весь массив конфигураций.
- смешанный|null
$valueопционально null - Значение для установки.
- логическое значение
$mergeопционально true - Истинное значение для рекурсивного слияния или перезаписи существующей конфигурации, по умолчанию истинное.
Возвращает
mixedЗначение конфигурации для чтения или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallow()source 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 - Значение для установки.
Возвращает
$this Объект сам по себе.
Подробное описание свойств
$_defaultConfigsource
protected массив
Значения конфигурации по умолчанию
Они объединяются с предоставленной пользователем конфигурацией при использовании поведения.
[]
$_reflectionCachesource
protected статический массив
Кэш методов рефлексии для поведений.
Хранит отраженные методы + методы поиска по классам. Это предотвращает многократное отражение одного и того же класса в одном процессе.
[]
© 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.2/class-Cake.ORM.Behavior.html