Я почти готова плакать. Я прочитал справочную страницу php.net, попробовал десятки поисковых запросов в Google с различными фразами и отсканировал сотни потоков stackoverflow. Я видел этот метод в использовании, но он просто не работает для меня. Это кажется таким простым. У меня есть пара вопросов или проблем, на которые я не знаю, как найти ответы.
Важная часть файла PHP выглядит следующим образом:
switch() {
…other cases…
default:
$tpl['title'] = "Newsletter Signup";
$tpl['description'] = "Newsletter description";
$tpl['page-content'] = file_get_contents('signup.html');
}
$tpl_src = addslashes(file_get_contents('index.tpl'));
eval("\$html = \"$tpl_src\";");
echo $html;
Мой файл index.tpl содержит такие строки:
<title>{$tpl['title']}</title><br>
<meta name="description" content="{$tpl['description']}" /><br>
nav, etc…<br>
<div id="main-content"> {$tpl['page-content']} </div>
Мне нравится, насколько аккуратен и понятен код, без целой связки дополнительных <?=…?>
.
Во-первых, когда в строке появляются фигурные скобки {}, как это называется? Я мог бы найти его и научиться пользоваться им, если бы знал.
Далее, это просто не работает вообще. Если я удаляю одинарные кавычки из ключей переменных, это хорошо, но php.net говорит, что вы никогда не должны этого делать, если мое имя в какой-то момент станет константой языка. Справедливо. Но как мне это исправить? Мне нравится использовать массив для vars, если я хочу создать подпрограмму evalTemplate и могу просто передать ей $ tpl.
Наконец, $ tpl ['page-content'] не распечатывается. Переменная установлена в порядке; Я могу использовать echo $tpl['page-content']
для проверки, но в конечном HTML-коде он отображается как одна пустая строка.
Я уверен, что есть только один аспект языка, который я еще не знаю. Любая помощь высоко ценится!