Spec-Zone.ru › CakePHP 3.8

Класс Поведение

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

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

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

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

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 может предоставить поиск ('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
    Удаление алиасов методов, которые в противном случае были бы продублированы настройкой пользовательского интерфейса.
  • 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

Возвращает

массив

Исключения

ReflectionException

_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

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

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

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

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

Возвращает

массив

Исключения

ReflectionException

implementedMethods()source public

implementedMethods( )

implementedMethods

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

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

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

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

Возвращает

массив

Исключения

ReflectionException
END_OF_DOCUMENT_MARKER

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

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

Устарело

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

Параметры

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

Возвращает

смешанный тип
Данные конфигурации по указанному ключу или 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
Выполнять рекурсивное объединение или перезаписывать существующую конфигурацию, по умолчанию true.

Возвращает


$this

Исключения

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

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

$_defaultConfigsource

protected массив

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

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

[]

$_reflectionCachesource

protected статическое массив

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

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

[]

$_tablesource

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/3.8/class-Cake.ORM.Behavior.html

Spec-Zone.ru

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