Spec-Zone.ru › CakePHP 4.2

Класс 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)
Пространство имен: Cake\ORM
См.: \Cake\ORM\Table::addBehavior()
См.: \Cake\Event\EventManager

Резюме свойств

  • $_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

Настройка карты соответствия методов.

Возвращает

array

configShallow() 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

Значение для установки.

Возвращает

$this

getConfig() 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

Возвращаемое значение, если ключ не существует.

Возвращает

mixed

getConfigOrFail() public

getConfigOrFail(string $key): mixed

Возвращает конфигурацию для данного ключа.

Значение конфигурации для этого ключа должно существовать, оно никогда не может быть null.

Параметры

string $key

Ключ для получения.

Возвращает

mixed

Выбрасывает

InvalidArgumentException

getTable() public

getTable(): Cake\ORM\Table

Возвращает экземпляр таблицы, к которому привязано это поведение.

Возвращает

Cake\ORM\Table

implementedEvents() public

implementedEvents(): array

Возвращает обработчики обратного вызова модели, которые интересуют это поведение.

Определяя один из методов обратного вызова, поведение предполагается заинтересованным в соответствующем событии.

Переопределите этот метод, если вам нужно добавить обработчики нестандартных событий. Или если вы хотите, чтобы ваше поведение прослушивало нестандартные события.

Возвращает

array

implementedFinders() public

implementedFinders(): array

implementedFinders

Предоставляет отображение алиас->имя_метода для реализованных поисковых методов. Пример:

[
   'this' => 'findThis',
   'alias' => 'findMethodName'
 ]

С этим примером, вызов $table->find('this') вызовет $behavior->findThis(), а вызов $table->find('alias') вызовет $behavior->findMethodName()

Рекомендуется, но не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не использовать рефлексию для получения списка доступных методов. См. примеры в ядре поведения.

Возвращает

array

Выбрасывает

ReflectionException

implementedMethods() public

implementedMethods(): array

implementedMethods

Предоставляет отображение алиас->имя_метода для реализованных методов. Пример:

[
   'method' => 'method',
   'aliasedMethod' => 'somethingElse'
 ]

С этим примером, вызов $table->method() вызовет $behavior->method(), а вызов $table->aliasedMethod() вызовет $behavior->somethingElse()

Рекомендуется, но не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не использовать рефлексию для получения списка доступных методов. См. примеры в ядре поведения.

Возвращает

array

Выбрасывает

ReflectionException

initialize() public

initialize(array $config): void

Метод-обработчик конструктора.

Реализуйте этот метод, чтобы избежать необходимости перезаписывать конструктор и вызывать родительский.

Параметры

array $config

Параметры конфигурации, предоставленные этому поведению.

Возвращает

void

setConfig() 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\Table

verifyConfig() 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API