Класс 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