Класс 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 может предоставить поиск «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Миксин: \Cake\Core\InstanceConfigTrait
Расположение: 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 = [] )
Конструктор
Объединяет конфигурацию с параметрами по умолчанию и сохраняет результат в свойстве конфигурации
Параметры
-
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 дочерних классов, чтобы не было необходимости использовать рефлексию для получения доступного списка методов. См. примеры основных поведений.
Возвращает
массивИсключения
ReflectionExceptionimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение алиас->имя_метода реализованных методом поведения. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведённом примере, вызов $Table->method() вызовет $Behavior->method() а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для вывода доступного списка методов. См. примеры в базовых поведенческих классах.
Возвращает
arrayИсключения
ReflectionExceptioninitialize()source public
initialize( array $config )
Метод-обработчик инициализации.
Реализуйте этот метод, чтобы избежать необходимости переопределять конструктор и вызывать родительский.
Параметры
- array
$config - Настройки конфигурации, предоставленные этому поведению.
verifyConfig()source public
verifyConfig( )
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые методы.
Исключения
Cake\Core\Exception\Exceptionесли конфигурация неверна
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет отдельный ключ конфигурации.
Параметры
- string
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionесли попытка перезаписи существующей конфигурации
_configRead()source protected
_configRead( string|null $key )
Читает ключ конфигурации.
Параметры
- string|null
$key - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge = false )
Записывает ключ конфигурации.
Параметры
- string|array
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|string
$mergeoptional false True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Исключения
Cake\Core\Exception\Exceptionесли попытка перезаписи существующей конфигурации
config()source public deprecated
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() вместо этого.Параметры
- string|array|null
$keyoptional null - Ключ для получения/установки или полный массив конфигураций.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional true - Выполнять ли рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Исключения
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']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueoptional 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'); Параметры
- string|null
$keyoptional null - Ключ для получения или null для всей конфигурации.
- mixed
$defaultoptional null - Значение возврата, когда ключ не существует.
Возвращает
mixedЗначение конфигурации, которое читается.
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']);
Параметры
- string|array
$key - Ключ для установки или полный массив конфигураций.
- mixed|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional true - Выполнять ли рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
$this
Исключения
Cake\Core\Exception\ExceptionПри попытке установить неверный ключ.
Подробное описание свойств
$_defaultConfigsource
protected array
Настройки по умолчанию
Они сливаются с предоставленными пользователем настройками при использовании поведения.
[]
$_reflectionCachesource
protected static array
Кэш рефлексии методов для поведений.
Хранит отраженные методы + методы нахождения для каждого класса. Это предотвращает многократное отражение одного и того же класса в одном процессе.
[]
© 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.6/class-Cake.ORM.Behavior.html