0
有沒有辦法找出哪些變量由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插件可能並不總能解決問題。例如,如果您想知道應根據模板中使用哪些字段從數據庫中提取哪些字段。由於來自聯接的數據未在模板中使用,插件無法知道是否可以跳過昂貴的聯接。 –