<table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0"><tr><th colspan="3" align="center">Smarty - the compiling PHP template engine</th></tr><tr><td width="25%" align="left" valign="bottom"><a href="language.variables.assigned.html" accesskey="P">Prev</a></td><td width="50%" align="center" valign="bottom">Chapter 4. Variables[第四章.变量]</td><td width="25%" align="right" valign="bottom"><a href="language.config.variables.html" accesskey="N">Next</a></td></tr></table>
### Variable scopes[变量范围]
You have the choice to assign variables to the scope of the main Smarty object, data objects created with createData(), and template objects created with createTemplate(). These objects can be chained. A template sees all the variables of its own object and all variables assigned to the objects in its chain of parent objects.
By default templates which are rendered by $smarty->display(...) or $smarty->fetch(...) calls are automatically linked to the Smarty object variable scope.
By assigning variables to individual data or template objects you have full control which variables can be seen by a template.
你可以选择为主要的Smarty对象作用域分配变量,createData()用来建立数据对象,createTemplate()用来建立模板对象。这些对象支持链式,在模板中可以查看所有模板本身的对象变量和所有分配给父对象链的变量。
默认情况下,模板在执行$smarty->displaty(...)、$smarty->fetch(...)方法时已自动链接至Smarty对象变量范围。
对于分配到单个数据或模板对象的变量,您可以完全控制哪些变量在模板中可见。
译注
| 这些所谓的主要Smarty对象,共有三个,分别是Smarty、模板、数据;在php程序中,为这些作用域变量赋值时,首先须将它们实例化,如$smarty = New Smarty()、$tpl = createTemplate()、$data = createData()。 |
|-----|
<table width="100%" border="0" cellpadding="0" cellspacing="0" class="EXAMPLE"><tr><td><div class="EXAMPLE"><a name="AEN2194" id="AEN2194"/><b>Example 4.6. Variable scope examples</b><br/><strong>例4.6. 变量范围例子</strong><table border="0" bgcolor="#E0E0E0" width="100%"><tr><td><pre class="PROGRAMLISTING">// assign variable to Smarty object scope 为Smarty对象域分配变量$smarty->assign('foo','smarty');
// assign variables to data object scope 为数据对象域分配变量$data = $smarty->createData();$data->assign('foo','data');$data->assign('bar','bar-data');
// assign variables to other data object scope 为其它数据对象域分配变量$data2 = $smarty->createData($data);$data2->assign('bar','bar-data2');
// assign variable to template object scope 为模版对象域分配变量$tpl = $smarty->createTemplate('index.tpl');$tpl->assign('bar','bar-template');
// assign variable to template object scope with link to Smarty object 用链接至Smarty对象方式指定模版对象的变量范围$tpl2 = $smarty->createTemplate('index.tpl',$smarty);$tpl2->assign('bar','bar-template2');
// This display() does see $foo='smarty' from the $smarty object 在$samrty对象中,执行display(),$foo='smarty'可见$smarty->display('index.tpl');
// This display() does see $foo='data' and $bar='bar-data' from the data object $data
//在数据对象$data中,执行display()令$foo='data'和$bar='bar-data'可见$smarty->display('index.tpl',$data);
// This display() does see $foo='data' from the data object $data // and $bar='bar-data2' from the data object $data2
//数据对象$data执行display(),$foo='data'可见,$bar='bar-data2'在$data2中可见$smarty->display('index.tpl',$data2);
// This display() does see $bar='bar-template' from the template object $tpl //模板对象$tpl执行display(),$bar='bar-template'可见$tpl->display(); // or $smarty->display($tpl);
// This display() does see $bar='bar-template2' from the template object $tpl2// and $foo='smarty' form the Smarty object $foo$tpl2->display(); // or $smarty->display($tpl2);</pre></td></tr></table></div></td></tr></table>
<table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="language.variables.assigned.html" accesskey="P">Prev</a></td><td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td><td width="33%" align="right" valign="top"><a href="language.config.variables.html" accesskey="N">Next</a></td></tr><tr><td width="33%" align="left" valign="top">Variables<br/> 变量</td><td width="34%" align="center" valign="top"><a href="language.variables.html#LANGUAGE.ASSIGNED.VARIABLES" accesskey="U">Up</a></td><td width="33%" align="right" valign="top">Variables loaded from config files<br/> 从配置文件读取的变量</td></tr></table>
- Smarty模板编译引擎
- 序
- 译序
- I.开始
- 第一章. 什么是Smarty?
- 第二章. 安装
- II.模板设计者篇
- 第三章.基本语法
- 注释
- 变量
- 函数
- 属性
- 双引号里嵌入变量
- 数学运算
- 忽略Smarty解析
- 第四章.变量
- 从PHP分配的变量
- 从配置文件读取的变量
- 变量范围
- {$smarty}保留变量
- 第五章.变量调节器
- capitalize
- cat
- count_characters
- count_paragraphs
- count_sentences
- count_words
- date_format
- default
- escape
- indent
- lower
- nl2br
- regex_replace
- replace
- spacify
- string_format
- strip
- strip_tags
- truncate
- upper
- wordwrap
- 第六章.组合修改器
- 第七章.内置函数
- {$var=}
- {append}
- {assign}
- {block}
- {call}
- {capture}
- {config_load}
- {debug}
- {extends}
- {for}
- {foreach},{foreachelse}
- @index
- {function}
- {if},{elseif},{else}
- {include}
- {include_php}
- {insert}
- {ldelim},{rdelim}
- {literal}
- {nocache}
- {php}
- {section},{sectionelse}
- .index
- {while}
- 第八章.自定义函数
- {counter}
- {cycle}
- {eval}
- {fetch}
- {html_checkboxes}
- {html_image}
- {html_options}
- {html_radios}
- {html_select_date}
- {html_select_time}
- {html_table}
- {mailto}
- {math}
- {textformat}
- 第九章.配置文件
- 第十章.调试控制台
- III.模板程序员篇
- 第十一章 常量
- SMARTY_DIR
- 第十二章 Smarty类变量
- $template_dir
- 第十三章.Smarty类方法
- append()
- appendByRef()
- assign()
- assignByRef()
- clearAllAssign()
- clearAllCache()
- clearAssign()
- clearCache()
- clearCompiledTpl()
- clearConfig()
- compileAllConfig()
- compileAllTemplates()
- configLoad()
- createData()
- createTemplate()
- disableSecurity()
- display()
- enableSecurity()
- fetch()
- getConfigVars()
- getRegisteredObject()
- getTags()
- getTemplateVars()
- isCached()
- loadFilter()
- registerFilter()
- registerPlugin()
- registerObject()
- registerResource()
- templateExists()
- unregisterFilter()
- unregisterPlugin()
- unregisterObject()
- unregisterResource()
- testInstall()
- 第十四章.缓存
- 建立缓存
- 多重缓存
- 缓存集合
- 控制插件输出的可缓存性
- 第十五章.高级特性
- 安全
- 通过模板更改设置
- 模板继承
- 数据流
- 对象
- 静态类
- 预过滤器
- 后过滤器
- 输出过滤器
- 缓存处理函数
- 资源
- 第十六章.以插件扩展Smarty
- 插件如何工作
- 命名约定
- 编写插件
- 模板函数
- 调节器
- 块函数
- 编译函数
- 预滤器/后滤器
- 输出过滤器
- 资源
- 插入
- Ⅳ.附录
- 第十七章.疑难解答
- Smarty/PHP 错误
- 第十八章.使用技巧和经验
- 空白变量处理
- 默认变量处理
- 传递变量标题给头模板
- 日期
- WAP/WML
- 组件化模板
- 拒绝电子邮件地址
- 第十九章. 相关资源
- 第二十章. 漏洞
- 3.0安装包
- 2.x版本升级至3.x版本的提示
- 3.0.x使用指南
- 翻译人员列表