Spec-Zone.ru › CakePHP 3.3

Класс Behavior

Базовый класс для поведений.

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

Методы миксинов

Поведения могут предоставлять функции миксинов, объявляя публичные методы. Эти методы будут доступны в таблицах, к которым добавлено поведение.

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 может предоставить метод поиска find('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
См.: \Cake\ORM\Table::addBehavior()
См.: Cake\Event\EventManager
Расположение: ORM/Behavior.php

Краткое описание свойств

  • $_defaultConfig protected
    array
    Значения по умолчанию
  • $_reflectionCache protected static
    array
    Кэширование методов отражения для поведений.
  • $_table protected
    Cake\ORM\Table
    Экземпляр таблицы.

Унаследованные свойства

  • _config, _configInitialized

Краткое описание методов

  • __construct() public
    Конструктор
  • _reflectionCache() protected
    Получает методы, реализованные этим поведением
  • _resolveMethodAliases() protected
    Удаляет алиасы методов, которые в противном случае были бы дублированы пользовательскими настройками.
  • implementedEvents() public
    Получает методы обратного вызова модели, которыми интересуется это поведение.
  • implementedFinders() public
    implementedFinders
  • implementedMethods() public
    implementedMethods
  • initialize() public
    Метод подключения конструктора.
  • verifyConfig() public
    verifyConfig

Подробное описание методов

__construct()source public

__construct( Cake\ORM\Table $table , array $config [] )

Конструктор

Объединяет конфигурацию со значениями по умолчанию и хранит ее в свойстве config.

Параметры

Cake\ORM\Table $table
Таблица, к которой подключено это поведение.
массив $config необязательный []
Конфигурация этого поведения.

_reflectionCache()source protected

_reflectionCache( )

Получает методы, реализованные этим поведением

Использует метод implementedEvents() для исключения методов обратного вызова. Методы, начинающиеся с _, будут проигнорированы, также как и методы, объявленные в Cake\ORM\Behavior

Возвращает

массив

_resolveMethodAliases()source protected

_resolveMethodAliases( string $key , array $defaults , array $config )

Удаляет алиасы методов, которые в противном случае были бы дублированы пользовательскими настройками.

Параметры

строка $key
Ключ для фильтрации.
массив $defaults
Карта отображения методов по умолчанию.
массив $config
Настроенная карта отображения методов.

Возвращает

массив
Список конфигурации без дублирования.

implementedEvents()source public

implementedEvents( )

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

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

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

Возвращает

массив

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

implementedFinders()source public

implementedFinders( )

implementedFinders

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

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

В приведенном выше примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()

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

Возвращает

массив

implementedMethods()source public

implementedMethods( )

implementedMethods

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

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

В приведенном выше примере вызов $Table->method() вызовет $Behavior->method(), а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()

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

Возвращает

массив

initialize()source public

initialize( array $config )

Метод подключения конструктора.

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

Параметры

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

verifyConfig()source public

verifyConfig( )

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
Ключ для чтения.

Возвращает

mixed

_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']);

Параметры

строка|массив|null $key необязательно null
Ключ для получения/установки или весь массив конфигурации.
смешанное|null $value необязательно null
Значение для установки.
булево $merge необязательно true
Выполнять рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает

mixed
Чтение значения конфигурации, или сам объект при операциях записи.

Исключения

Cake\Core\Exception\Exception
При попытке установить недействительный ключ.

configShallow()source public

configShallow( string|array $key , mixed|null $value null )

Объединить предоставленную конфигурацию с существующей. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.

Установка конкретного значения:

$this->config('key', $value);

Установка вложенного значения:

$this->config('some.nested.key', $value);

Обновление нескольких настроек конфигурации одновременно:

$this->config(['one' => 'value', 'another' => 'value']);

Параметры

строка|массив $key
Ключ для установки, или весь массив конфигурации.
смешанное|null $value необязательно null
Значение для установки.

Возвращает


$this Сам объект.

Подробности свойств

$_defaultConfigsource

protected массив

Значения по умолчанию конфигурации

Они объединяются с предоставленной пользователем конфигурацией, когда используется поведение.

[]

$_reflectionCachesource

protected static массив

Кэш отражения методов для поведений.

Хранит отраженный метод + методы нахождения для каждого класса. Это предотвращает многократное отражение одного и того же класса в одном процессе.

[]

$_tablesource

protected Cake\ORM\Table

Экземпляр таблицы.

© 2005–2017 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.3/class-Cake.ORM.Behavior.html

Spec-Zone.ru

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