Класс 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Расположение: ORM/Behavior/TimestampBehavior.php
Подробное описание метода
_updateFieldисходный код защищенный
_updateField( Cake\Datasource\EntityInterface $entity , string $field , boolean $refreshTimestamp )
Обновить поле, если оно еще не было обновлено
Параметры
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
- строка
$field - Имя поля
- логический
$refreshTimestamp - Обновить метку времени.
handleEventисходный код публичный
handleEvent( Cake\Event\Event $event , Cake\Datasource\EntityInterface $entity )
Существует только один обработчик событий, он может быть настроен для вызова для любого события
Параметры
-
Cake\Event\Event$event - Экземпляр события.
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
Возвращает
true(независимо от логики поведения, сохранение не будет предотвращено)
Вызывает
UnexpectedValueExceptionесли значение поля when определено неправильно
UnexpectedValueExceptionКогда значение для события не равно 'всегда', 'новый' или 'существующий'
implementedEventsисходный код публичный
implementedEvents( )
implementedEvents
Реализованные события этого поведения зависят от конфигурации
Возвращает
arrayмассив
Переопределяет
Cake\ORM\Behavior::implementedEvents() initializeисходный код публичный
initialize( array $config )
Обработчик инициализации
Если события указаны — не объединяйте их с существующими событиями, перезаписывайте события для прослушивания
Параметры
- массив
$config - Конфигурация для данного поведения.
Переопределяет
Cake\ORM\Behavior::initialize() timestampисходный код публичный
timestamp( DateTime $ts null , boolean $refreshTimestamp false )
Получить или установить используемую метку времени
Установите метку времени на заданный объект DateTime или, если он не передан, новый объект DateTime. Если явно передается объект DateTime, опция конфигурации refreshTimestamp автоматически устанавливается в значение false.
Параметры
- DateTime
$tsнеобязательно null - Метка времени
- логический
$refreshTimestampнеобязательно false - Если true, метка времени обновляется.
Возвращает
Cake\I18n\Time\Cake\I18n\Time
touchисходный код публичный
touch( Cake\Datasource\EntityInterface $entity , string $eventName 'Model.beforeSave' )
Обновить метку времени для сущности
Обновляет поля метки времени для сущности. Для любых полей, настроенных на обновление «всегда» или «существующий», обновляется значение метки времени. Этот метод перезапишет любое существующее значение.
Параметры
-
Cake\Datasource\EntityInterface$entity - Экземпляр сущности.
- строка
$eventNameнеобязательно 'Model.beforeSave' - Имя события.
Возвращает
booleantrue, если поле обновлено, false, если действие не выполнено
Методы, унаследованные от Cake\ORM\Behavior
__constructисходный код публичный
__construct( Cake\ORM\Table $table , array $config [] )
Конструктор
Объединяет конфигурацию со значениями по умолчанию и сохраняет в свойстве конфигурации
Параметры
-
Cake\ORM\Table$table - Таблица, к которой прикреплено данное поведение.
- массив
$configнеобязательно [] - Конфигурация для данного поведения.
_reflectionCacheисходный код защищенный
_reflectionCache( )
Получает методы, реализованные данным поведением
Использует метод implementedEvents() для исключения методов обратных вызовов. Методы, начинающиеся с _, будут игнорироваться, как и методы, объявленные в Cake\ORM\Behavior
Возвращает
arrayмассив
_resolveMethodAliasesисходный код защищенный
_resolveMethodAliases( string $key , array $defaults , array $config )
Удаляет алиасированные методы, которые в противном случае были бы дублированы пользовательской конфигурацией.
Параметры
- строка
$key - Ключ для фильтрации.
- массив
$defaults - Стандартные отображения методов.
- массив
$config - Настраиваемые отображения методов.
Возвращает
arrayСписок конфигурационных данных без дублирования.
implementedFindersисходный код публичный
implementedFinders( )
implementedFinders
Предоставляет карту «алиас» - «имя метода» реализованных методов поиска поведением. Пример:
[ 'this' => 'findThis', 'alias' => 'findMethodName' ]
Приведенном примере вызов $Table->find('this') вызовет $Behavior->findThis(), а вызов $Table->find('alias') вызовет $Behavior->findMethodName()
Рекомендуется, хотя и не обязательно, определять implementedFinders в свойстве конфигурации дочерних классов, чтобы не было необходимости использовать отражения для получения списка доступных методов. Примеры см. в базовых классах.
Возвращает
arrayмассив
implementedMethodssource public
implementedMethods( )
implementedMethods
Предоставляет отображение «псевдоним»-«имя метода» реализованных методом поведения. Пример:
[ 'method' => 'method', 'aliasedmethod' => 'somethingElse' ]
В приведенном примере вызов $Table->method() вызовет $Behavior->method() , а вызов $Table->aliasedmethod() вызовет $Behavior->somethingElse()
Рекомендуется (но не обязательно) определять implementedFinders в свойстве config дочерних классов, чтобы не было необходимости использовать рефлексию для получения списка доступных методов. См. примеры в базовых поведенческих классах.
Возвращает
arrayмассив
verifyConfigsource public
verifyConfig( )
verifyConfig
Проверяет, что реализованные ключи содержат значения, указывающие на вызываемые объекты.
Выбрасывает
Cake\Core\Exception\Exceptionесли конфигурация неверна
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDeletesource protected
_configDelete( string $key )
Удаление отдельного ключа конфигурации
Параметры
- строка
$key - Ключ для удаления.
Выбрасывает
Cake\Core\Exception\Exceptionесли происходит попытка перезаписи существующей конфигурации
_configReadsource protected
_configRead( string|null $key )
Чтение переменной конфигурации
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
mixedсмешанный тип
_configWritesource protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный тип
$value - Значение для записи.
- булево|строка
$mergeнеобязательно false - Истина для рекурсивного слияния, «shallow» для простого слияния, ложь для перезаписи, по умолчанию — ложь.
Выбрасывает
Cake\Core\Exception\Exceptionесли происходит попытка перезаписи существующей конфигурации
configsource 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 - Требуется ли рекурсивное слияние или перезапись существующей конфигурации, по умолчанию — истина.
Возвращает
mixedЗначение конфигурации, которое читается, или сам объект при операциях записи.
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallowsource 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 - Значение для установки.
Возвращает
mixedСам объект.
Сводка свойств
Свойства, унаследованные от Cake\ORM\Behavior
$_reflectionCachesource
protected static массив
Кэширование методов рефлексии для поведений.
Хранит отраженные методы + методы нахождения по классам. Это предотвращает многократное отражение одного и того же класса в одном процессе.
[]
Свойства, используемые из Cake\Core\InstanceConfigTrait
$_configInitializedsource
protected булево
Была ли конфигурация уже настроена с параметрами по умолчанию
false
© 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.1/class-Cake.ORM.Behavior.TimestampBehavior.html