Smarty 升级 2 到 3 _tag_stack 个选项

Smarty upgrade 2 to 3 _tag_stack options

我正在将一些代码从 smarty 2 升级到 3。smarty 对象中有一个名为 _tag_stack 的值,它似乎是 return 一个标记值数组。 Smarty 3 中这个的 1 对 1 替代品是什么?我正在查看 getTags() 但我不确定它 return 是否具有相同的值。

我正在查看的代码是:


if($section_name == '' && $smarty->_tag_stack[0][0] == 'bp_section'){ $section_name = $smarty->_tag_stack[0][1]['name']; }


Smarty 3 是一个相当彻底的重写,Smarty 2 是在 属性 可见性成为 PHP 之前的几天,标签堆栈实际上应该是私有的 属性 的 Smarty class,而在 Smarty 2 中,唯一引用它的 class 是编译器 (Smarty_Compiler),它实际上扩展了 Smarty class。因此,虽然可以从外部代码访问 Smarty 2 中的标签堆栈,但这并不是我们想要的。

在 Smarty 3 中,编译器不再扩展 Smarty class,而是扩展 Smarty_Internal_TemplateCompilerBase,这是 _tag_stack 属性 所在的位置。它是 public 属性,尽管有下划线。臭.

Smarty_Internal_Template 有一个 $compiler 属性,所以如果你想访问 custom function.

中的标签栈,这可能是你最好的选择

getTags 方法returns模板中使用的所有标签及其参数,它不像标签堆栈那样实时更新。