Есть ли способ узнать, какие переменные используются шаблоном Smarty
? Рассмотрим функцию, принимающую шаблон в качестве аргумента и назначение ему переменных. Некоторые из переменных требуют больших вычислений, поэтому я не хочу их вычислять и назначать им, если они не нужны. Я хотел бы что-то вроде этого:Проверьте, используется ли переменная в шаблоне Smarty
function addVariables($tpl) {
if($tpl->usesVariable('foo'))
$tpl->assign('foo', computationallyHeavyFunction());
return $tpl;
}
Если $tpl = "some text using some variable {$bar}"
, foo
не должен быть назначен, но если $tpl = "some text using some variable {$foo}"
, foo
должны быть вычислены и назначены. Это возможно?
Знаете ли вы, есть ли веская причина, почему внедрение такой функциональности должно быть трудным? –
Я не думаю, что это намеренно. Обычно писать компиляторы/интерпретаторы - сложная задача с множеством ограничений и требований. Думаю, авторам просто не нужна эта функциональность. Кстати писать плагин в smarty не сложно. В основном это только простые php-функции. –
Да, но плагин Smarty может не всегда решить проблему. Например, если вы хотите узнать, какие поля должны быть извлечены из базы данных, на основе того, какие поля используются в шаблоне. Плагин не может знать, можно ли пропускать дорогостоящее соединение из-за того, что данные из соединения не используются в шаблоне. –