Класс TimestampBehavior
Базовый класс для поведений.
Поведения позволяют вам моделировать миксины и создавать многократно используемые блоки логики приложения, которые могут быть повторно использованы в нескольких моделях. Поведения также предоставляют способ подключения к обратным вызовам модели и расширения их поведения.
Методы миксинов
Поведения могут предоставлять функции типа миксин, объявляя публичные методы. Эти методы будут доступны в таблицах, к которым добавлено поведение.
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 implements Cake\Event\EventListenerInterface uses Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\TimestampBehavior
См.: \Cake\ORM\Table::addBehavior()
См.:
Cake\Event\EventManagerРасположение: ORM/Behavior/TimestampBehavior.php
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray -
$_tsprotectedТекущая метка времениDateTime
Унаследованные свойства
Краткое описание методов
- _updateField() protectedОбновление поля, если оно ещё не обновлялось
- handleEvent() publicЕсть только один обработчик событий, он может быть настроен на вызов для любого события
- implementedEvents() publicimplementedEvents
- initialize() publicОбработчик инициализации
- timestamp() publicПолучение или установка используемой метки времени
- touch() publicОбновление метки времени сущности
Подробное описание методов
_updateField()source protected
_updateField( Cake\Datasource\EntityInterface $entity , string $field , boolean $refreshTimestamp )
Обновление поля, если оно ещё не обновлялось
Параметры
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
- строка
$field - Имя поля
- булево
$refreshTimestamp - Следует ли обновлять метку времени.
handleEvent()source public
handleEvent( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Есть только один обработчик событий, он может быть настроен на вызов для любого события
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
Возвращает
true(независимо от логики поведения, сохранение не будет предотвращено)
Исключения
UnexpectedValueExceptionесли значение поля определено неправильно
UnexpectedValueException
Когда значение для события не равно 'always', 'new' или 'existing'
implementedEvents()source public
implementedEvents( )
implementedEvents
Реализованные события этого поведения зависят от конфигурации
Возвращает
массивПереопределяет
Cake\ORM\Behavior::implementedEvents() initialize()source public
initialize( array $config )
Обработчик инициализации
Если указаны события - не объединяйте их с существующими событиями, перезаписывайте события, на которые нужно реагировать
Параметры
- массив
$config - Конфигурация для этого поведения.
Переопределяет
Cake\ORM\Behavior::initialize() timestamp()source public
timestamp( DateTime $ts null , boolean $refreshTimestamp false )
Получение или установка используемой метки времени
Установите метку времени на указанный объект DateTime или, если он не передан, новый объект DateTime. Если передан явный объект DateTime, опция конфигурации refreshTimestamp автоматически устанавливается в false.
Параметры
- DateTime
$tsнеобязательно null - Метка времени
- булево
$refreshTimestampнеобязательно false - Если true, метка времени обновляется.
Возвращает
Cake\I18n\Timetouch()source public
touch( Cake\Datasource\EntityInterface $entity , string $eventName 'Model.beforeSave' )
Обновление метки времени сущности
Обновляет поля с метками времени для сущности. Для всех полей, настроенных на обновление «всегда» или «существующее», обновляет значение метки времени. Этот метод перезапишет любое ранее существовавшее значение.
Параметры
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
- строка
$eventNameнеобязательно 'Model.beforeSave' - Имя события.
Возвращает
булевоtrue, если поле обновлено, false, если действие не выполнено
Методы, унаследованные от Cake\ORM\Behavior
__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 - Настраиваемые отображения методов.
Возвращает
массивСписок конфигурационных данных без дублирования.
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 дочерних классов, чтобы не приходилось использовать рефлексию для вывода доступного списка методов. См. примеры базовых поведений.
Возвращает
массив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 - Ключ для чтения.
Возвращает
смешанный_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись конфигурационной переменной.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- boolean|строка
$mergeoptional 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
$keyoptional null - Ключ для получения/установки или полный массив конфигураций.
- смешанный|null
$valueoptional null - Значение для установки.
- boolean
$mergeoptional true - Производить рекурсивное слияние или перезаписывать существующую конфигурацию, по умолчанию истина.
Возвращает
смешанныйЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Выбрасывает
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
$valueoptional null - Значение для установки.
Возвращает
$this Сам объект.
Подробности свойств
$_defaultConfigsource
protected массив
Стандартная конфигурация
Они объединяются с предоставленной пользователем конфигурацией при использовании поведения.
events - массив, индексированный именем события, содержащий поля, которые нужно обновить и когда. Возможные значения для обновления поля - «всегда», «новый» или «существующий», для установки значения поля всегда, только при создании нового или только при обновлении существующего.
refreshTimestamp - если true (по умолчанию), используемое отметка времени будет текущим временем, когда выполняется код, чтобы установить явную дату и время - установите refreshTimetamp в false и вызовите setTimestamp() на классе поведения перед использованием.
[
'implementedFinders' => [],
'implementedMethods' => [
'timestamp' => 'timestamp',
'touch' => 'touch'
],
'events' => [
'Model.beforeSave' => [
'created' => 'new',
'modified' => 'always'
]
],
'refreshTimestamp' => true
]
© 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.TimestampBehavior.html