Реквестирую следующий паттерн - SILENT, а то слишком много tell-ов
PHP:
$User = User::find($login);
View::render('template',['user'=>$User]);
и это
$this->view = new JsonView('views/template.json');
$this->view->set($model)->render();
Зачем харкодить модель с юзером, влюху, передавать явно шаблон?
Вот примерно максимально минимальный код.
PHP:
function profile(User $user) {
return $user;
}
DI сам найдёт модель, диспетчер возьмёт из роутера ID и дёрнет метод find, после ретурна проверяется тип запроса (json, xml, html). Если нужны первые, то просто вызывается сериализация модели в нужный формат с учётом прав и скрытых полей. Если html, то кастуем имя шаблона $controller/action и выводим его. Всё это довольно легко программируется практически на любом фреймворке, даже на ZF.
Зачем спрашивать и говорить, если можно молчать?