Spec-Zone.ru › CakePHP 3.1

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

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

__constructsource public

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

Конструктор

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

Параметры

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

_reflectionCachesource protected

_reflectionCache( )

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

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

Возвращает

array
массив

_resolveMethodAliasessource protected

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

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

Параметры

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

Возвращает

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

implementedEventssource public

implementedEvents( )

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

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

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

Возвращает

array
массив

Реализация

Cake\Event\EventListenerInterface::implementedEvents()

implementedFinderssource public

implementedFinders( )

implementedFinders

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

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

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

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

Возвращает

array
массив

implementedMethodssource public

implementedMethods( )

implementedMethods

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

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

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

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

Возвращает

array
массив

initializesource public

initialize( array $config )

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

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

Параметры

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

verifyConfigsource public

verifyConfig( )

verifyConfig

Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые элементы.

Возбуждает

Cake\Core\Exception\Exception
если конфигурация неверна

Методы, используемые из Cake\Core\InstanceConfigTrait

_configDeletesource protected

_configDelete( string $key )

Удаление одного ключа конфигурации

Параметры

строка $key
Ключ для удаления.

Возбуждает

Cake\Core\Exception\Exception
если пытаетесь перезаписать существующую конфигурацию

_configReadsource protected

_configRead( string|null $key )

Чтение переменной конфигурации

Параметры

строка|null $key
Ключ для чтения.

Возвращает

mixed
смешанный тип

_configWritesource protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Запись переменной конфигурации

Параметры

строка|массив $key
Ключ для записи.
смешанный тип $value
Значение для записи.
логическое|строка $merge необязательно false
Истинно для рекурсивного слияния, 'поверхностно' для простого слияния, ложно для перезаписи, по умолчанию ложно.

Возбуждает

Cake\Core\Exception\Exception
если пытаетесь перезаписать существующую конфигурацию
END_OF_DOCUMENT_MARKER

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

Параметры

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

Возвращает

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

Выбрасывает

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

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

Параметры

string|array $key
Ключ для установки или полный массив настроек.
mixed|null $value необязательно null
Значение для установки.

Возвращает

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

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

$_defaultConfigsource

protected array

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

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

[]

$_reflectionCachesource

protected static array

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

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

[]

$_tablesource

protected Cake\ORM\Table

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

Свойства, используемые из Cake\Core\InstanceConfigTrait

$_configsource

protected array

Конфигурация во время выполнения

[]

$_configInitializedsource

protected boolean

Указатель, уже ли свойство конфигурации было настроено с значениями по умолчанию

false

© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.ORM.Behavior.html

Spec-Zone.ru

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