我想要做這樣的事情:在調用Smarty的靜態方法,使用變量作爲類名
{$foo = 'SomeClassName'}
{$foo::someStaticMethod()}
當我編譯我的模板,我得到一個錯誤:Fatal error: Uncaught --> Smarty: Invalid compiled template for ...
該文件編譯後,試圖顯示模板時,我得到這個錯誤:Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting ',' or ';' in ...
當我檢查編譯模板,它包含此聲明:<?php echo $_smarty_tpl->tpl_vars['foo']->value::someStaticMethod();?>
,這顯然是不合法的PHP語法(目前)。
從我對最後一個例子here的理解中,Smarty應該支持這一點。
我做錯了什麼,或者這是Smarty中的錯誤?
'{分配VAR =欄值= SomeClassName :: someStaticMethod()}'正常工作。使用變量作爲類名時會出現問題。分配返回值時也是如此:'{assign var = foo value =「SomeClassName」} {assign var = bar value = $ foo :: someStaticMethod()}'會產生相同的錯誤。製作插件是一個很好的解決方法。謝謝!但是,它不是在Smarty中的錯誤還是在文檔中的錯誤? –
我正在使用Smarty的舊版本。更新到最新版本修復了這個問題:) –