Правильная Модель User

Здравствуйте!

Начал реализовывать первый проект на Yii (и вообще на mvc-фреймворке). Пока что все очень нравится, но возник вопрос.

Имею модель User, которая хранит данные профиля пользователя.

После авторизации на сайте надо выводить имя пользователя в шапке. И, предположим, на странице.

Соответственно получается что-то типа этого:




 if(!Yii::app()->user->isGuest) {

      $profile_id = Yii::app()->user->profile_id;

      $currentUser = User::model()->findByPk($profile_id);

 }



Такой код создаст запрос к БД на выборку инфы о пользователе.

А если мне нужно вывести инфу о пользователе в 2 местах? В двух методах / вьюшках ?

Получается, что будет уже 2 запроса к БД? Как в таких случаях грамотно реализовать модель?

Была мысль сделать в модели метод:




protected static $users = array();


public function getUserProfile($profile_id) {

    if(!array_key_exists($profile_id, self::$users)) {

        self::$users[$profile_id] = $this->findByPk($profile_id);

    }


    return self::$users[$profile_id];

}



И где-то в контроллере (или где правильно такое размещать?):




public function getCurrentUser() {

    $profile_id = Yii::app()->user->profile_id;

    return User::model()->getUserProfile($profile_id);

}



Тогда можно где-угодно дергать $controller->getCurrentUser(); и реально из БД информация будет грузиться только в первый раз.

Но насколкьо это правильно? Может быть есть лучший способ?

Я бы все-таки сделал такое в компоненте WebUser:


<?php


class WebUser extends CWebUser {


    private $_model = null;


    public function getModel() {

        if (!$this->isGuest && !$this->_model) 

            $this->_model = User::model()->findByPk($this->id);

        return $this->_model;

    }


}

и потом в любой точке Yii::app()->user->model