Класс Behavior
Базовый класс для поведений.
Поведения позволяют вам моделировать миксины и создавать многократно используемые блоки логики приложения, которые можно повторно использовать в нескольких моделях. Поведения также предоставляют способ подключения к обратным вызовам модели и дополнения их поведения.
Методы миксина
Поведения могут предоставлять функциональность типа миксин, объявляя публичные методы. Эти методы будут доступны в таблицах, к которым добавлено поведение.
function doSomething($arg1, $arg2) {
// do something
} Будет вызвано как $table->doSomething($arg1, $arg2);.
Методы обратного вызова
Поведения могут прослушивать любые события, генерируемые в Таблице. По умолчанию CakePHP предоставляет ряд событий жизненного цикла, за которыми могут следить ваши поведения:
-
beforeFind(EventInterface $event, Query $query, ArrayObject $options, boolean $primary)Вызывается перед каждой операцией поиска. Останавливая событие и предоставляя возвращаемое значение, вы можете полностью обойти операцию поиска. Любые изменения, внесенные в экземпляр $query, сохранятся для дальнейшего поиска. Параметр $primary указывает, является ли это корневым запросом или запросом связанной модели. -
buildValidator(EventInterface $event, Validator $validator, string $name)Вызывается при построении объекта валидатора, идентифицируемого по $name. Вы можете использовать этот обратный вызов для добавления правил валидации или добавления поставщиков валидации. -
buildRules(EventInterface $event, RulesChecker $rules)Вызывается при построении объекта проверки правил для таблицы. Вы можете использовать этот обратный вызов для добавления дополнительных правил к набору. -
beforeRules(EventInterface $event, EntityInterface $entity, ArrayObject $options, $operation)Вызывается перед проверкой сущности с помощью проверяющего правила. Остановив это событие, вы можете вернуть конечное значение операции проверки правил. -
afterRules(EventInterface $event, EntityInterface $entity, ArrayObject $options, bool $result, $operation)Вызывается после проверки правил на сущности. Остановив это событие, вы можете вернуть конечное значение операции проверки правил. -
beforeSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)Вызывается перед сохранением каждой сущности. Остановка этого события приведет к прерыванию операции сохранения. Когда событие остановлено, результатом события будет возвращаемое значение. -
afterSave(EventInterface $event, EntityInterface $entity, ArrayObject $options)Вызывается после сохранения сущности. -
beforeDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options)Вызывается перед удалением сущности. Остановка этого события приведет к прерыванию операции удаления. -
afterDelete(EventInterface $event, EntityInterface $entity, ArrayObject $options)Вызывается после удаления сущности.
Помимо основных событий, поведения могут реагировать на любые события, генерируемые вашими классами таблиц, включая пользовательские события.
Вы можете установить приоритет обратных вызовов поведения, используя параметр priority при подключении поведения. Это установит приоритет для всех обратных вызовов, предоставляемых поведением.
Методы поиска
Поведения могут предоставлять методы поиска, которые подключаются к методу find() таблицы. Пользовательские поисковые методы — отличный способ предоставить предварительно заданные запросы, относящиеся к вашему поведению. Например, SluggableBehavior может предоставить метод поиска find('slugged'). Поисковые методы поведения реализуются так же, как и другие поисковые методы. Любой метод, начинающийся с find будет настроен как метод поиска. Ваши методы поиска должны ожидать следующие аргументы:
findSlugged(Query $query, array $options)
Резюме свойств
- $_config protected
arrayКонфигурация выполнения
- $_configInitialized protected
boolУказатель, был ли уже настроен параметр config по умолчанию
- $_defaultConfig protected
arrayКонфигурация по умолчанию
- $_reflectionCache protected static
arrayКэширование методов рефлексии для поведений.
- $_table protected
Cake\ORM\TableЭкземпляр таблицы.
Резюме методов
-
__construct() public
Конструктор
-
_configDelete() protected
Удаляет единственный ключ конфигурации.
-
_configRead() protected
Читает ключ конфигурации.
-
_configWrite() protected
Записывает ключ конфигурации.
-
_reflectionCache() protected
Получает методы, реализованные этим поведением
-
_resolveMethodAliases() protected
Удаляет алиасы методов, которые в противном случае были бы дублированы пользовательской конфигурацией.
-
configShallow() public
Объединяет предоставленную конфигурацию с существующей конфигурацией. В отличие от
config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение. -
getConfig() public
Возвращает конфигурацию.
-
getConfigOrFail() public
Возвращает конфигурацию для этого конкретного ключа.
-
getTable() public deprecated
Получить экземпляр таблицы, к которому привязано это поведение.
-
implementedEvents() public
Получает обратные вызовы модели, которыми интересуется это поведение.
-
implementedFinders() public
implementedFinders
-
implementedMethods() public
implementedMethods
-
initialize() public
Метод обратного вызова конструктора.
-
setConfig() public
Устанавливает конфигурацию.
-
table() public
Получить экземпляр таблицы, к которому привязано это поведение.
-
verifyConfig() public
verifyConfig
Подробное описание методов
__construct() public
__construct(Cake\ORM\Table $table, array $config = [])
Конструктор
Объединяет конфигурацию с параметрами по умолчанию и сохраняет её в свойстве config
Параметры
-
Cake\ORM\Table$table Таблица, к которой прикреплено это поведение.
-
array$config optional Конфигурация для этого поведения.
_configDelete() protected
_configDelete(string $key): void
Удаляет один ключ конфигурации.
Параметры
-
string$key Ключ для удаления.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли попытка перезаписать существующую конфигурацию
_configRead() protected
_configRead(string|null $key): mixed
Считывает значение ключа конфигурации.
Параметры
-
string|null$key Ключ для чтения.
Возвращает
mixed_configWrite() protected
_configWrite(string|array $key, mixed $value, bool|string $merge = false): void
Записывает значение ключа конфигурации.
Параметры
-
string|array$key Ключ для записи.
-
mixed$value Значение для записи.
-
bool|string$merge optional True для рекурсивного объединения, 'shallow' для простого объединения, false для перезаписи, по умолчанию false.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли попытка перезаписать существующую конфигурацию
_reflectionCache() protected
_reflectionCache(): array
Возвращает методы, реализованные этим поведением
Использует метод implementedEvents(), чтобы исключить методы обратного вызова. Методы, начинающиеся с _ будут игнорироваться, как и методы, объявленные в Cake\ORM\Behavior
Возвращает
arrayВыбрасывает
ReflectionException_resolveMethodAliases() protected
_resolveMethodAliases(string $key, array $defaults, array $config): array
Удаляет алиасированные методы, которые в противном случае будут дублироваться конфигурацией пользовательского интерфейса.
Параметры
-
string$key Ключ для фильтрации.
-
array$defaults Карта соответствия методов по умолчанию.
-
array$config Настройка карты соответствия методов.
Возвращает
arrayconfigShallow() public
configShallow(string|array $key, mixed|null $value = null): $this
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или массив конфигураций.
-
mixed|null$value optional Значение для установки.
Возвращает
$thisgetConfig() public
getConfig(string|null $key = null, mixed $default = null): mixed
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определённого значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
-
string|null$key optional Ключ для получения, или null для всей конфигурации.
-
mixed$default optional Возвращаемое значение, если ключ не существует.
Возвращает
mixedgetConfigOrFail() public
getConfigOrFail(string $key): mixed
Возвращает конфигурацию для данного ключа.
Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.
Параметры
-
string$key Ключ для получения.
Возвращает
mixedВыбрасывает
InvalidArgumentExceptiongetTable() public
getTable(): Cake\ORM\Table
Возвращает экземпляр таблицы, к которому привязано это поведение.
Возвращает
Cake\ORM\TableimplementedEvents() public
implementedEvents(): array
Возвращает обработчики обратного вызова модели, которые интересуют это поведение.
Определяя один из методов обратного вызова, поведение предполагается заинтересованным в соответствующем событии.
Переопределите этот метод, если вам нужно добавить обработчики нестандартных событий. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.
Возвращает
arrayimplementedFinders() public
implementedFinders(): array
implementedFinders
Предоставляет отображение алиас->имя_метода для реализованных поисковых методов. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
С этим примером, вызов $table->find('this') вызовет $behavior->findThis(), а вызов $table->find('alias') вызовет $behavior->findMethodName()
Рекомендуется, но не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не использовать рефлексию для получения списка доступных методов. См. примеры в ядре поведения.
Возвращает
arrayВыбрасывает
ReflectionExceptionimplementedMethods() public
implementedMethods(): array
implementedMethods
Предоставляет отображение алиас->имя_метода для реализованных методов. Пример:
[ 'method' => 'method', 'aliasedMethod' => 'somethingElse' ]
С этим примером, вызов $table->method() вызовет $behavior->method(), а вызов $table->aliasedMethod() вызовет $behavior->somethingElse()
Рекомендуется, но не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не использовать рефлексию для получения списка доступных методов. См. примеры в ядре поведения.
Возвращает
arrayВыбрасывает
ReflectionExceptioninitialize() public
initialize(array $config): void
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родительский.
Параметры
-
array$config Параметры конфигурации, предоставленные этому поведению.
Возвращает
voidsetConfig() public
setConfig(string|array $key, mixed|null $value = null, bool $merge = true): $this
Устанавливает конфигурацию.
Использование
Установка конкретного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
-
string|array$key Ключ для установки или массив конфигураций.
-
mixed|null$value optional Значение для установки.
-
bool$merge optional Объединять рекурсивно или перезаписывать существующую конфигурацию, по умолчанию true.
Возвращает
$thisВыбрасывает
Cake\Core\Exception\CakeExceptionПри попытке установить недопустимый ключ.
table() public
table(): Cake\ORM\Table
Возвращает экземпляр таблицы, к которому привязано это поведение.
Возвращает
Cake\ORM\TableverifyConfig() public
verifyConfig(): void
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые объекты.
Возвращает
voidВыбрасывает
Cake\Core\Exception\CakeExceptionесли конфигурация некорректна
Подробное описание свойств
$_config protected
Конфигурация во время выполнения
Тип
array$_configInitialized protected
Указание, была ли конфигурация свойства уже настроена по умолчанию
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию
Эти настройки объединяются с настройками, предоставленными пользователем, при использовании поведения.
Тип
array$_reflectionCache protected static
Кэш отражения методов для поведения.
Хранит отраженные методы + методы поиска по классам. Это предотвращает многократное отражение одного и того же класса в одном процессе.
Тип
array$_table 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/4.2/class-Cake.ORM.Behavior.html