Spec-Zone.ru › CakePHP 4.3

Класс 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<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

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

Возвращает

array

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

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

Возвращает

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

Выбрасывает

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<string, mixed> $config): void

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

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

Параметры

array<string, mixed> $config

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

Возвращает

void

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

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

Spec-Zone.ru

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