Spec-Zone.ru › CakePHP 3.5

Класс 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
Миксин: \Cake\Core\InstanceConfigTrait
Расположение: ORM/Behavior.php

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

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

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

  • _config, _configInitialized

Резюме методов

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

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

__construct()source public

__construct( Cake\ORM\Table $table , array $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
Настраиваемые соответствия методов.

Возвращает

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

getTable()source public

getTable( )

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

Возвращает

Cake\ORM\Table
Привязанный экземпляр таблицы.

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

Проверка конфигурации

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

Исключения

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
Ключ для считывания.

Возвращает

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

_configWrite()source protected

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

Записывает ключ конфигурации.

Параметры

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

Истина для рекурсивного слияния, 'shallow' для простого слияния, ложь для перезаписи, по умолчанию ложь.

Исключения

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

Устаревшее

3.4.0 используйте setConfig()/getConfig() вместо этого.

Параметры

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

Возвращает

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

Исключения

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

configShallow()source public

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

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

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

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

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

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

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

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

Параметры

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

Возвращает


$this

getConfig()source public

getConfig( string|null $key null , mixed $default null )

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

Использование

Чтение всей конфигурации:

$this->getConfig();

Чтение определенного значения:

$this->getConfig('key');

Чтение вложенного значения:

$this->getConfig('some.nested.key');

Чтение со значением по умолчанию:

$this->getConfig('some-key', 'default-value');

Параметры

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

Возвращает

смешанный тип
Значение конфигурации, которое считывается.

setConfig()source public

setConfig( string|array $key , mixed|null $value null , boolean $merge true )

Устанавливает конфигурацию.

Использование

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

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

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

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

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

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

Параметры

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

Возвращает


$this

Исключения

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

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

$_defaultConfigsource

protected массив

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

Эти значения объединяются с предоставленными пользователем значениями при использовании поведения.

[]

$_reflectionCachesource

protected static массив

Кэш методов рефлексии для поведений.

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

[]

$_tablesource

protected Cake\ORM\Table

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

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

Spec-Zone.ru

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