Задать вопрос
chelovekmuravei
@chelovekmuravei
\(-_-)/ раз два три четыре

PHP как выводить переменные в шаблонах?

Трудно сформулировать сразу вопрос, я опишу проблему.

Есть классы и у них есть свои свойства, например имя пользователя и другие данные.
class User{
  private $_name;

  public function getName(){
    return $this->_name;
  }
}

Есть класс, который выбирает нужный шаблон и открывает его.
class PageSelect{
  # передаются данные из get запроса, получаю название нужного шаблона
  public function getTpl(){
    require_once($_SERVER['DOCUMENT_ROOT'].'/tpl/' . $this->tmpl . '.tpl');
  }
}

Получается, что ранее созданные объекты, например $userName = new User(); использовать в шаблоне нельзя, область видимости не позволяет. И тут я понимаю, что делать статические классы - неправильно, глобальный доступ - неправильно, нужно 1. либо подключать шаблоны в самом main, чтобы область видимости было для всего, или 2. передавать в PageSelect все нужные свойства для вывода их на страницу. Как это делать? Создать массив и во всех методах пихать туда все свойства? Вдруг я захочу выводить что-то. Как быть? Как правильнее это делать, не понимаю.
  • Вопрос задан
  • 999 просмотров
Подписаться 3 Оценить 3 комментария
Решения вопроса 2
e_svirsky
@e_svirsky
Web Developer
Вам нужно что-то типо того:
if (is_array($vars) && !empty($vars)) {
     extract($vars);
}
ob_start();
include $templateFile;
$content =  ob_get_clean();


И Все $vars будут доступны внутри шаблона.
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
как вариант:
$user = new User();
$view = new PageSelect();
$view->username = $user->_name;

В контексте инклуд файлов у вас будет $this->username;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы