Spec-Zone.ru › CakePHP 3.3

Класс 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
    implementedEvents
  • 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
Когда значение для события не равно 'always', 'new' или 'existing'

implementedEvents()source public

implementedEvents( )

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'
Имя события.

Возвращает

булево
true, если поле обновлено, 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
Настраиваемые отображения методов.

Возвращает

массив
Список конфигурационных данных без дублирования.

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 optional 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 optional null
Ключ для получения/установки или полный массив конфигураций.
смешанный|null $value optional null
Значение для установки.
boolean $merge optional 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 optional null
Значение для установки.

Возвращает


$this Сам объект.

Подробности свойств

$_defaultConfigsource

protected массив

Стандартная конфигурация

Они объединяются с предоставленной пользователем конфигурацией при использовании поведения.

events - массив, индексированный именем события, содержащий поля, которые нужно обновить и когда. Возможные значения для обновления поля - «всегда», «новый» или «существующий», для установки значения поля всегда, только при создании нового или только при обновлении существующего.

refreshTimestamp - если true (по умолчанию), используемое отметка времени будет текущим временем, когда выполняется код, чтобы установить явную дату и время - установите refreshTimetamp в false и вызовите setTimestamp() на классе поведения перед использованием.

[
    'implementedFinders' => [],
    'implementedMethods' => [
        'timestamp' => 'timestamp',
        'touch' => 'touch'
    ],
    'events' => [
        'Model.beforeSave' => [
            'created' => 'new',
            'modified' => 'always'
        ]
    ],
    'refreshTimestamp' => true
]

$_tssource

protected DateTime

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

© 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.3/class-Cake.ORM.Behavior.TimestampBehavior.html

Spec-Zone.ru

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