Spec-Zone.ru › CakePHP 3.2

Класс 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
Extended by Cake\ORM\Behavior\TimestampBehavior
Пространство имён: Cake\ORM\Behavior
См.: \Cake\ORM\Table::addBehavior()
См.: Cake\Event\EventManager
Расположение: ORM/Behavior/TimestampBehavior.php

Краткое описание свойств

  • $_defaultConfig protected
    array
    Настройки по умолчанию
  • $_ts protected
    DateTime
    Текущее значение метки времени

Унаследованные свойства

  • _reflectionCache, _table _config, _configInitialized

Краткое описание методов

  • _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\Time

touch()source public

touch( Cake\Datasource\EntityInterface $entity , string $eventName 'Model.beforeSave' )

Обновить метку времени сущности

Обновляет поля метки времени для сущности. Для полей, настроенных на обновление «всегда» или «существующий», обновляет значение метки времени. Этот метод перепишет любое ранее существовавшее значение.

Параметры

Cake\Datasource\EntityInterface $entity
Экземпляр сущности.
строка $eventName необязательно 'Model.beforeSave'
Имя события.

Возвращает

boolean
true, если поле обновлено, 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
]

$_tssource

protected DateTime

Текущая метка времени

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API