Spec-Zone.ru › CakePHP 3.1

Класс 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
Extended by Cake\ORM\Behavior\TimestampBehavior
Пространство имен: Cake\ORM\Behavior
См.: 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'
Имя события.

Возвращает

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

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
Сам объект.

Сводка свойств

$_defaultConfigsource

protected массив

Значения по умолчанию конфигурации

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

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

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

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

$_tssource

protected DateTime

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

Свойства, унаследованные от Cake\ORM\Behavior

$_reflectionCachesource

protected static массив

Кэширование методов рефлексии для поведений.

Хранит отраженные методы + методы нахождения по классам. Это предотвращает многократное отражение одного и того же класса в одном процессе.

[]

$_tablesource

protected Cake\ORM\Table

Экземпляр таблицы.

Свойства, используемые из Cake\Core\InstanceConfigTrait

$_configsource

protected массив

Конфигурация во время выполнения

[]

$_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

Spec-Zone.ru

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