有没有办法找出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
。这可能吗?
答案 0 :(得分:0)
我不这么认为。但是可能更好(/工作)的方法是创建一个延迟加载包装器插件并使用它而不是直接变量调用。
这样你的插件只有在任何地方使用时才会被调用,如果你在这里进行计算/在这里调用计算重量部分,你可以确定只有在真正需要时才会进行计算。