Я пишу простой шаблонный слой на PHP, но я немного застрял. Вот как это работает на данный момент:
Сначала я использую fetch_template
для загрузки содержимого шаблона из базы данных - это работает (и я собираю все шаблоны при запуске, если вам интересно).
Я использую переменные PHP в своем коде шаблона и в логике - например ::
// PHP:
$name = 'Ross';
// Tpl:
<p>Hello, my name is $name.</p>
Затем я использую output_template
(ниже), чтобы проанализировать переменные в шаблоне и заменить их. Ранее я использовал теги шаблонов с прославленным классом шаблонов str_replace
, но он был слишком неэффективным.
/**
* Returns a template after evaluating it
* @param string $template Template contents
* @return string Template output
*/
function output_template($template) {
eval('return "' . $template . '";');
}
Моя проблема, если вы еще не догадались, состоит в том, что переменные не объявляются внутри функции - поэтому функция не может анализировать их в $template
, если я не помещу их в глобальную область видимости - что я не уверен, что хочу сделать. Это или иметь массив переменных в качестве параметра в функции (что звучит еще более утомительно, но возможно).
У кого-нибудь есть какие-либо решения, кроме использования кода из функции (это всего лишь однострочный) в моем коде, а не использования функции?
Спасибо,
Росс
P.s. Я знаю о Smarty и огромном количестве шаблонизаторов - я не собираюсь их использовать, поэтому, пожалуйста, не предлагайте их. Спасибо!