Здравствуйте!
Начал реализовывать первый проект на 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(); и реально из БД информация будет грузиться только в первый раз.
Но насколкьо это правильно? Может быть есть лучший способ?