Spec-Zone.ru › CakePHP 3.5

Класс 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
Миксин: \Cake\Core\InstanceConfigTrait
Расположение: 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()исходный код 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, метка времени обновляется.

Возвращает

DateTime

touch()исходный код public

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

Изменить метку времени

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

Параметры

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

Возвращает

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

$_tssource

protected DateTime

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

© 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

Spec-Zone.ru

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