Spec-Zone.ru › Yii 2.0

Класс yii\behaviors\AttributeBehavior

Все классы | Свойства | Методы
Наследование yii\behaviors\AttributeBehavior » yii\base\Behavior » yii\base\Object
Реализует yii\base\Configurable
Подклассы yii\behaviors\BlameableBehavior, yii\behaviors\SluggableBehavior, yii\behaviors\TimestampBehavior
Доступно с версии 2.0
Исходный код https://github.com/yiisoft/yii2/blob/master/framework/behaviors/AttributeBehavior.php

AttributeBehavior автоматически присваивает указанное значение одному или нескольким атрибутам объекта ActiveRecord при определённых событиях.

Для использования AttributeBehavior, настройте свойство $attributes, которое должно содержать список атрибутов, которые необходимо обновить, и соответствующие события, которые должны инициировать обновление. Затем настройте свойство $value с помощью PHP вызываемого объекта, значение которого будет использовано для присвоения текущему атрибуту(ам). Например,

use yii\behaviors\AttributeBehavior;

public function behaviors()
{
    return [
        [
            'class' => AttributeBehavior::className(),
            'attributes' => [
                ActiveRecord::EVENT_BEFORE_INSERT => 'attribute1',
                ActiveRecord::EVENT_BEFORE_UPDATE => 'attribute2',
            ],
            'value' => function ($event) {
                return 'some value';
            },
        ],
    ];
}

Поскольку значения атрибутов будут устанавливаться автоматически этим поведением, они обычно не являются входными данными пользователя и, следовательно, не должны проверяться, т.е. они не должны появляться в методе rules() модели.

Общедоступные свойства

Свойство Тип Описание Определено в
$attributes массив Список атрибутов, которые будут автоматически заполнены значением, указанным через $value. yii\behaviors\AttributeBehavior
$owner yii\base\Component|null Владелец этого поведения yii\base\Behavior
$preserveNonEmptyValues boolean Нужно ли сохранить непустые значения атрибутов. yii\behaviors\AttributeBehavior
$skipUpdateOnClean boolean Пропускать ли это поведение, когда $owner не был изменён yii\behaviors\AttributeBehavior
$value смешанный тип Значение, которое будет присвоено текущим атрибутам. yii\behaviors\AttributeBehavior

Общедоступные методы

Метод Описание Определено в
__call() Вызывает метод, который не является методом класса. yii\base\Object
__construct() Конструктор. yii\base\Object
__get() Возвращает значение свойства объекта. yii\base\Object
__isset() Проверяет, установлено ли свойство, т.е. определено и не равно null. yii\base\Object
__set() Устанавливает значение свойства объекта. yii\base\Object
__unset() Устанавливает свойство объекта в null. yii\base\Object
attach() Присоединяет объект поведения к компоненту. yii\base\Behavior
canGetProperty() Возвращает значение, указывающее, можно ли прочитать свойство. yii\base\Object
canSetProperty() Возвращает значение, указывающее, можно ли установить свойство. yii\base\Object
className() Возвращает полное имя этого класса. yii\base\Object
detach() Отсоединяет объект поведения от компонента. yii\base\Behavior
evaluateAttributes() Вычисляет значение атрибута и присваивает его текущим атрибутам. yii\behaviors\AttributeBehavior
events() Объявляет обработчики событий для событий $owner. yii\behaviors\AttributeBehavior
hasMethod() Возвращает значение, указывающее, определён ли метод. yii\base\Object
hasProperty() Возвращает значение, указывающее, определено ли свойство. yii\base\Object
init() Инициализирует объект. yii\base\Object

Защищённые методы

Метод Описание Определено в
getValue() Возвращает значение для текущих атрибутов. yii\behaviors\AttributeBehavior

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

$attributes общедоступное свойство

Список атрибутов, которые будут автоматически заполнены значением, указанным через $value. Ключи массива — события ActiveRecord, при которых атрибуты должны обновляться, а значения — соответствующие атрибуты для обновления. Вы можете использовать строку для представления одного атрибута или массив для представления списка атрибутов. Например,

[
    ActiveRecord::EVENT_BEFORE_INSERT => ['attribute1', 'attribute2'],
    ActiveRecord::EVENT_BEFORE_UPDATE => 'attribute2',
]
public array $attributes = []

$preserveNonEmptyValues общедоступное свойство (доступно с версии 2.0.13)

Нужно ли сохранить непустые значения атрибутов.

public boolean $preserveNonEmptyValues = false

$skipUpdateOnClean общедоступное свойство (доступно с версии 2.0.8)

Пропускать ли это поведение, когда $owner не был изменён

public boolean $skipUpdateOnClean = true

$value общедоступное свойство

Значение, которое будет присвоено текущим атрибутам. Это может быть анонимная функция, вызываемый объект в формате массива (например, [$this, 'methodName']), объект Expression, представляющий выражение базы данных (например, new Expression('NOW()')), скаляр, строка или произвольное значение. Если это функция, значение, возвращённое функцией, будет присвоено атрибутам. Подпись функции должна быть следующей,

function ($event)
{
    // return value will be assigned to the attribute
}
public mixed $value = null

Подробности о методах

evaluateAttributes() public method

Оценивает значение атрибута и присваивает его текущим атрибутам.

public void evaluateAttributes ( $event )
$event yii\base\Event

events() public method

Объявляет обработчики событий для событий компонента $owner.

Подклассы могут переопределять этот метод, чтобы объявить, какие PHP-обработчики должны быть присоединены к событиям компонента $owner.

Обработчики будут присоединены к событиям $owner при присоединении поведения к владельцу; и они будут отключены от событий при отсоединении поведения от компонента.

Обработчики могут быть следующих типов:

  • метод в этом поведении: 'handleClick', эквивалентно [$this, 'handleClick']
  • метод объекта: [$object, 'handleClick']
  • статический метод: ['Page', 'handleClick']
  • анонимная функция: function ($event) { ... }

Вот пример:

[
    Model::EVENT_BEFORE_VALIDATE => 'myBeforeValidate',
    Model::EVENT_AFTER_VALIDATE => 'myAfterValidate',
]
public array events ( )
return array

События (ключи массива) и соответствующие методы обработчиков событий (значения массива).

getValue() protected method

Возвращает значение для текущих атрибутов.

Этот метод вызывается методом evaluateAttributes(). Его возвращаемое значение будет присвоено атрибутам, соответствующим вызвавшему событию.

protected mixed getValue ( $event )
$event yii\base\Event

Событие, которое вызывает обновление текущего атрибута.

return mixed

Значение атрибута

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-behaviors-attributebehavior.html

Spec-Zone.ru

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