Класс 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 реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait
-
Cake\ORM\Behavior\TimestampBehavior
См.: \Cake\ORM\Table::addBehavior()
См.:
Cake\Event\EventManagerМиксин: \Cake\Core\InstanceConfigTrait
Расположение: ORM/Behavior/TimestampBehavior.php
Краткое описание свойств
-
$_defaultConfigprotectedНастраиваемый конфигarray -
$_tsprotectedТекущая метка времениDateTime
Унаследованные свойства
Краткое описание методов
- _updateField() protectedОбновить поле, если оно ещё не обновлялось
- handleEvent() publicСуществует только один обработчик событий, он может быть настроен на вызов для любого события
- implementedEvents() publicРеализованные события
- initialize() publicОбработчик инициализации
- timestamp() publicПолучить или установить метку времени
- touch() publicИзменить метку времени
Подробное описание методов
_updateField()исходный код protected
_updateField( Cake\Datasource\EntityInterface $entity , string $field , boolean $refreshTimestamp )
Обновить поле, если оно ещё не обновлялось
Параметры
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
- строка
$field - Имя поля
- логическое
$refreshTimestamp - Обновить ли метку времени.
handleEvent()исходный код public
handleEvent( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Существует только один обработчик событий, он может быть настроен на вызов для любого события
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
Возвращает
booleanВозвращает true независимо от логики поведения, сохранение не будет предотвращено.
Выбрасывает
UnexpectedValueExceptionесли значение поля приведено к некорректному виду
UnexpectedValueException
если значение события не равно 'всегда', 'new' или 'existing'
implementedEvents()исходный код public
implementedEvents( )
Реализованные события
Реализованные события этого поведения зависят от конфигурации
Возвращает
массивПереопределяет
Cake\ORM\Behavior::implementedEvents() initialize()исходный код public
initialize( array $config )
Обработчик инициализации
Если события указаны — не объединяйте их с существующими, перезаписывайте события, на которые нужно подписаться
Параметры
- массив
$config - Конфигурация для данного поведения.
Переопределяет
Cake\ORM\Behavior::initialize() timestamp()исходный код public
timestamp( DateTime $ts null , boolean $refreshTimestamp false )
Получить или установить метку времени
Установить метку времени на указанный объект DateTime или, если он не передан, создать новый объект DateTime. Если явным образом передается объект DateTime, опция конфигурации refreshTimestamp автоматически устанавливается в false.
Параметры
- DateTime
$tsопционально null - Метка времени
- логическое
$refreshTimestampопционально false - Если true, метка времени обновляется.
Возвращает
DateTimetouch()исходный код public
touch( Cake\Datasource\EntityInterface $entity , string $eventName 'Model.beforeSave' )
Изменить метку времени
Обновляет поля меток времени для сущности. Для полей, настроенных на обновление "всегда" или "существующее", обновить значение метки времени. Этот метод перепишет любое предварительно существующее значение.
Параметры
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
- строка
$eventNameопционально 'Model.beforeSave' - Имя события.
Возвращает
booleantrue, если поле обновлено, false, если действие не выполнено
Методы, унаследованные от Cake\ORM\Behavior
__construct()исходный код public
__construct( Cake\ORM\Table $table , array $config [] )
Конструктор
Объединяет конфигурацию с параметрами по умолчанию и сохраняет их в свойстве config
Параметры
-
Cake\ORM\Table$table - Таблица, к которой прикреплено это поведение.
- массив
$configопционально [] - Конфигурация для данного поведения.
_reflectionCache()исходный код 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
Предоставляет отображение alias->methodname реализованных методов поиска. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
В приведенном выше примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. Примеры см. в основных методах.
Возвращает
массивimplementedMethods()source public
implementedMethods( )
implementedMethods
Предоставляет отображение alias->methodname реализованных методов. Пример:
[ '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']);
Устарело
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 массив
Предопределённая конфигурация
Эти значения объединяются с предоставленной пользователем конфигурацией при использовании метода.
events - массив, индексированный именем события, содержащий поля, которые нужно обновить и когда. Возможные значения для обновления поля - "always", "new" или "existing", для установки значения поля всегда, только при добавлении записи или только при обновлении существующей записи.
refreshTimestamp - если истинно (по умолчанию), используемое значение метки времени - текущее время при выполнении кода, для установки явного значения даты и времени - установите refreshTimetamp в ложь и вызовите setTimestamp() в классе поведения перед использованием.
[
'implementedFinders' => [],
'implementedMethods' => [
'timestamp' => 'timestamp',
'touch' => 'touch'
],
'events' => [
'Model.beforeSave' => [
'created' => 'new',
'modified' => 'always'
]
],
'refreshTimestamp' => true
]
© 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.TimestampBehavior.html