Класс 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<string, mixed>Конфигурация выполнения
- $_configInitialized protected
boolУказывает, была ли конфигурация уже настроена по умолчанию
- $_defaultConfig protected
array<string, mixed>Конфигурация по умолчанию
- $_reflectionCache protected static
array<string, 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<string, mixed> $config = [])
Конструктор
Объединяет конфигурацию с параметрами по умолчанию и сохраняет её в свойстве config
Параметры
-
Cake\ORM\Table$table Таблица, к которой прикреплено это поведение.
-
array<string, mixed>$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(array<string, mixed>|string $key, mixed $value, string|bool $merge = false): void
Записывает значение ключа конфигурации.
Параметры
-
array<string, mixed>|string$key Ключ для записи.
-
mixed$value Значение для записи.
-
string|bool$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<string, mixed> $defaults, array<string, mixed> $config): array
Удаляет алиасированные методы, которые в противном случае будут дублироваться конфигурацией пользовательского интерфейса.
Параметры
-
string$key Ключ для фильтрации.
-
array<string, mixed>$defaults Карта соответствия методов по умолчанию.
-
array<string, mixed>$config Настройка карты соответствия методов.
Возвращает
arrayconfigShallow() public
configShallow(array<string, mixed>|string $key, mixed|null $value = null): $this
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка конкретного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких параметров конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
-
array<string, mixed>|string$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<string, mixed>
Возвращает обработчики обратного вызова модели, которые интересуют это поведение.
Определяя один из методов обратного вызова, поведение предполагается заинтересованным в соответствующем событии.
Переопределите этот метод, если вам нужно добавить обработчики нестандартных событий. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.
Возвращает
array<string, mixed>implementedFinders() 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<string, mixed> $config): void
Метод-обработчик конструктора.
Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родительский.
Параметры
-
array<string, mixed>$config Параметры конфигурации, предоставленные этому поведению.
Возвращает
voidsetConfig() public
setConfig(array<string, mixed>|string $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']);
Параметры
-
array<string, mixed>|string$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<string, mixed>$_configInitialized protected
Указание, была ли конфигурация свойства уже настроена по умолчанию
Тип
bool$_defaultConfig protected
Конфигурация по умолчанию
Эти настройки объединяются с настройками, предоставленными пользователем, при использовании поведения.
Тип
array<string, mixed>$_reflectionCache protected static
Кэш отражения методов для поведения.
Хранит отраженные методы + методы поиска по классам. Это предотвращает многократное отражение одного и того же класса в одном процессе.
Тип
array<string, 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.3/class-Cake.ORM.Behavior.html