首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能升级2到3 _tag_stack选项

智能升级2到3 _tag_stack选项
EN

Stack Overflow用户
提问于 2020-09-23 15:46:45
回答 1查看 159关注 0票数 1

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

我看的代码是:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 14:06:00

Smarty 3是一个非常激进的重写,Smarty 2是在PHP中属性可见性( property visibility )之前的一段时间,标记堆栈实际上应该是Smarty类的私有属性,而在Smarty 2中,唯一引用它的类是编译器(Smarty_Compiler),它实际上扩展了Smarty类。因此,虽然可以通过外部代码访问Smarty 2中的标记堆栈,但这并不是有意的。

在Smarty 3中,编译器不再扩展Smarty类,它扩展了Smarty_Internal_TemplateCompilerBase,这是_tag_stack属性存在的地方。这是一个公共财产,尽管下划线。臭气熏天。

Smarty_Internal_Template有一个$compiler属性,所以如果您试图访问自定义函数中的标记堆栈,这可能是最好的选择。

getTags方法返回模板中使用的所有标记及其参数,而不是像标记堆栈那样实时更新的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64031678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档