Поведения в yii позволяют применять некоторые методы к уже существующему объекту из другого класса. Для чего могут понадобиться поведения? Рассмотрим “жизненный” пример. Нужно получить какие-то данные по залогиненному пользователю. Можно, конечно, использовать что-то вроде:
User::model()->findByPk(Yii::app()->user->id);
А можно использовать поведения и добавить метод в Yii::app()->user protected/components/WebUser.php
class WebUser extends CBehavior
{
public function getData()
{
if ($this->getOwner()->id)
{
return User::model()->findByPk($this->getOwner()->id);
}
else
{
return FALSE;
}
}
}
Добавляем в конфиг protected/config/main.php
...
'user'=>array(
'loginUrl' => '/login',
// enable cookie-based authentication
'allowAutoLogin'=>true,
'behaviors' => array(
'WebUser' => array(
'class' => 'WebUser',
)
)
),
...
Теперь можно использовать так:
Yii::app()->user->data->posts;