eucalipt
@eucalipt
Самоделкин.

Скажите, я правильно понимаю процесс шаблонизации?

Моя логика верна?

1. Есть простой .php файл с простым HTML кодом.
2. В шапке я подключаю файл шаблонизатора.
3. Посреди этого кода в виде {{ переменная }} есть переменная (например, username), которая должна давать мне доступ к этим данным (в моем случае - к имени пользователя).
4. Шаблонизатор открывает данный файл, ищет в нем {{ ... }} конструкции и заменяет содержимое этих двойных фигурных скобок переменными (только вот откуда их брать?)

Или я неправильно понял еще саму суть шаблонизации и все должно выглядеть как-то иначе?
(Извиняюсь, что какаю трейдами (хотя это и не форум 2006 года, конечно), просто не получается уместить все вопросы в один)
  • Вопрос задан
  • 297 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Лучше ответьте себе на вопрос: зачем писать свой шаблонизатор при наличии кучи готовых?
Если в академических целях - ok.
Если для реального использования - не стоит.

Ну а вообще понимаете правильно. Простейший шаблонизатор.
Шаблон:
<h1>{{title}}</h1>

Шаблонизатор:
class Template {
	private $data = [];
	
	public function set($name, $value) {
		$key = '{{' . $name . '}}';
		$this->data[$key] = $value;
	}
	
	public function get($name) {
		$key = '{{' . $name . '}}';
		return $this->data[$key];
	}

	public function render($fileName) {
		$source = file_get_contents($fileName);
		$build = str_replace(array_keys($this->data), array_values($this->data), $source);
		return $build;
	}
}


Использование:
$tmpl = new Template();
$tmpl->set('title', 'Hello');
echo $tmpl->render($templatesDirectory . 'main.tpl');
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@deleted-webter
О себе вот тут такой рассказ. Бит среди терабайтов
В пень эти шаблоны
вот норм
<html>
	<head>
		<title><?php echo $title;?></title>
	</head>
	<body>
		<h1><?php echo $heading;?></h1>
		<h3>My Todo List</h3>
			<ul>
				<?php foreach($todo_list as $item):?>
			<li><?php echo $item;?></li>
				<?php endforeach;?>
			</ul>
	</body>	
</html>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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