Класс 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() 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 - Экземпляр сущности.
Возвращает
true(независимо от логики поведения, сохранение не будет предотвращено)
Выбрасывает
UnexpectedValueExceptionесли значение поля когда неверно определено
UnexpectedValueException
Если значение для события не равно 'всегда', 'новый' или 'существующий'
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, метка времени обновляется.
Возвращает
Cake\I18n\Timetouch()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 [] )
Конструктор
Объединяет конфигурацию с параметрами по умолчанию и сохраняет в свойстве 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 - Значение для записи.
- логическое значение|строка
$mergeнеобязательно 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
$keyнеобязательно null - Ключ для получения/установки или полный массив конфигураций.
- смешанный тип|null
$valueнеобязательно null - Значение для установки.
- логическое значение
$mergeнеобязательно 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
$valueнеобязательно null - Значение для установки.
Возвращает
$this Объект сам по себе.
Подробная информация о свойствах
$_defaultConfigsource
protected массив
Значения по умолчанию
Эти значения объединяются с предоставленными пользователем значениями при использовании поведения.
events - массив, индексированный именем события, содержащий поля для обновления и время их обновления. Возможные значения для времени обновления поля — «всегда», «новый» или «существующий» для установки значения поля всегда, только при создании нового записы или только при обновлении существующей записи.
refreshTimestamp - если истина (значение по умолчанию), используется текущее время при выполнении кода. Для установки явного значения даты и времени — установите refreshTimetamp в ложь и вызовите setTimestamp() в классе поведения перед использованием.
[
'implementedFinders' => [],
'implementedMethods' => [
'timestamp' => 'timestamp',
'touch' => 'touch'
],
'events' => [
'Model.beforeSave' => [
'created' => 'new',
'modified' => 'always'
]
],
'refreshTimestamp' => true
]
© 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.2/class-Cake.ORM.Behavior.TimestampBehavior.html