Класс Поведение
Базовый класс для поведений.
Поведения позволяют моделировать миксины и создавать многократно используемые блоки логики приложения, которые можно повторно использовать в нескольких моделях. Поведения также предоставляют способ подключения к обратным вызовам модели и дополнения их поведения.
Методы миксинов
Поведения могут предоставлять функции типа миксинов, объявляя публичные методы. Эти методы будут доступны в таблицах, к которым добавлено поведение.
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Расположение: 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->methodname реализованных поисковиков поведения. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном выше примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. См. примеры основных поведений
Возвращает
массивИсключения
ReflectionExceptionimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет карту alias->methodname реализованных методов поведения. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном выше примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. См. примеры основных поведений
Возвращает
массивИсключения
ReflectionExceptioninitialize()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 - Ключ для чтения.
Возвращает
смешанный тип_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge = false )
Записывает значение ключа конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный тип
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false True для рекурсивного объединения, 'shallow' для простого объединения, false для перезаписи, по умолчанию 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 - Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию 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 - Возвращаемое значение, если ключ не существует.
Возвращает
смешанный типДанные конфигурации по указанному ключу или 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 - Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
$this
Исключения
Cake\Core\Exception\ExceptionПри попытке установить некорректный ключ.
Подробное описание свойств
$_defaultConfigsource
protected массив
Значения конфигурации по умолчанию
Объединяются с пользовательской конфигурацией при использовании поведения.
[]
$_reflectionCachesource
protected статическое массив
Кэш рефлексии методов для поведений.
Хранит отраженный метод + методы нахождения по классам. Это предотвращает отражение одного и того же класса несколько раз в одном процессе.
[]
© 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.8/class-Cake.ORM.Behavior.html