Использование поведения компонента
Компонент поддерживает шаблон mixin и может быть присоединен с одним или несколькими поведениями.Поведение - это объект, чьи методы могут быть «унаследованы» его присоединенным компонентом посредством сбора функциональности вместо специализации (т. Е. Обычного наследования классов).Компонент может быть связан с несколькими вариантами поведения и, таким образом, достигать «множественного наследования».
Классы поведения должны реализовывать интерфейс IBehavior
.Большинство поведений могут выходить из базового класса CBehavior
.Если к модели необходимо привязать поведение, оно может также расширяться от CModelBehavior или CActiveRecordBehavior , которое реализует дополнительные функции, определенные для моделей.
Чтобы использовать поведение,сначала он должен быть присоединен к компоненту путем вызова метода поведения attach()
.Затем мы можем вызвать метод поведения через компонент:
// $name uniquely identifies the behavior in the component
$component->attachBehavior($name,$behavior);
// test() is a method of $behavior
$component->test();
К присоединенному поведению можно получить доступ, как к обычному свойству компонента.Например, если к компоненту прикреплено поведение с именем дерева, мы можем получить ссылку на этот объект поведения с помощью:
$behavior=$component->tree;
// equivalent to the following:
// $behavior=$component->asa('tree');
Поведение можно временно отключить, чтобы его методы не были доступны через компонент,Например,
$component->disableBehavior($name);
// the following statement will throw an exception
$component->test();
$component->enableBehavior($name);
// it works now
$component->test();
Возможно, что два поведения, привязанные к одному и тому же компоненту, имеют методы с одинаковым именем.В этом случае метод первого присоединенного поведения будет иметь приоритет.
При использовании вместе с событиями поведение становится еще более мощным.Поведение, будучи прикрепленным к компоненту, может привязывать некоторые его методы к некоторым событиям компонента.Таким образом, поведение получает возможность наблюдать или изменять нормальный поток выполнения компонента.
Свойства поведения также могут быть доступны через компонент, к которому оно прикреплено.Свойства включают в себя как открытые переменные-члены, так и свойства, определенные через методы получения и / или установки поведения.Например, если у поведения есть свойство с именем xyz и поведение привязано к компоненту $ a.Затем мы можем использовать выражение $a->xyz
для доступа к свойству поведения.
Дополнительные сведения:
http://www.yiiframework.com/wiki/44/behaviors-events
http://www.ramirezcobos.com/2010/11/19/how-to-create-a-yii-behavior/