Класс 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 может предоставить метод поиска «slugged». Методы поиска поведения реализуются так же, как и другие методы поиска. Любой метод, начинающийся с find, будет настроен как метод поиска. Ваши методы поиска должны ожидать следующие аргументы:
findSlugged(Query $query, array $options)
- Cake\ORM\Behavior реализует Cake\Event\EventListenerInterface использует 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() publicРеализованные события
- 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 - Экземпляр сущности.
Возвращает
booleanВозвращает true независимо от логики поведения, сохранение не будет предотвращено.
Исключения
UnexpectedValueExceptionесли значение поля when задано неправильно
UnexpectedValueException
Если значение для события не равно 'always', 'new' или 'existing'
implementedEvents()source public
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, метка времени обновляется.
Возвращает
DateTimetouch()source public
touch( Cake\Datasource\EntityInterface $entity , string $eventName 'Model.beforeSave' )
Обновление сущности
Обновляет поля метки времени для сущности. Для любых полей, настроенных на обновление «всегда» или «существующие», обновляет значение метки времени. Этот метод перезапишет любое ранее существующее значение.
Параметры
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
- строка
$eventNameнеобязательно 'Model.beforeSave' - Имя события.
Возвращает
booleantrue, если поле обновлено, 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 - Настраиваемые сопоставления методов.
Возвращает
массивСписок конфигурационных данных без дублирования.
getTable()source public
getTable( )
Получить экземпляр таблицы, к которому привязан данный поведение.
Возвращает
Cake\ORM\TableЭкземпляр привязанной таблицы.
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|строка
$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 - Значение для установки.
- boolean
$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 - Значение для установки.
- boolean
$mergeнеобязательно true - Рекурсивно объединять или перезаписывать существующую конфигурацию, по умолчанию истинно.
Возвращает
$this
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить некорректный ключ.
Подробное описание свойств
$_defaultConfigsource
protected массив
Конфигурация по умолчанию
Эти значения объединяются с предоставленной пользователем конфигурацией при использовании поведения.
events - массив, индексированный именем события, содержащий поля для обновления и момент обновления. Возможные значения для момента обновления поля: "всегда", "новый" или "существующий", для установки значения поля всегда, только для новых записей или только для существующих записей.
refreshTimestamp - если истинно (по умолчанию), используемое временное значение будет текущим временем при выполнении кода. Чтобы установить явную дату и время, установите refreshTimestamp в ложь и вызовите 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.4/class-Cake.ORM.Behavior.TimestampBehavior.html