一聚教程网:一个值得你收藏的教程网站

热门教程

Php中smarty常用变量学习笔记

时间:2022-06-25 02:17:54 编辑:袖梨 来源:一聚教程网


现在开发网站时用到了smarty框架模板,感觉非常好用,较好实现了php源码和html代码的分离。现在分享smarty的一些常用变量。

1、SMARTY_DIR     Smarty目录

定位Smarty类文件的完整系统路径,如果没有定义Smarty目录,Smarty将会试着自动创建合适的值。如果定义了,路径必须要以斜线结束。

define(“SMARTY_DIR”,”/usr/local/lib/php/Smarty/”);

require_once(SMARTY_DIR.”Smarty.class.php”);

2、$template_dir  模板目录变量

该变量定义默认模板目录的名字。当包含文件时,如果不提供一个源类型(即源地址),那么将会到模板目录中寻找。默认情况下,目录是:“./templates”,也就是说他将会在和php执行脚本相同的目录下寻找模板目录。

3、$compile_dir  编译目录变量

该变量定位编译模板的目录名字。默认情况下,目录是:“./templates_c”,也就是说他将会在和php执行脚本相同的目录下寻找编译目录。

4、$config_dir    配置目录变量

该变量定义用于存放模板配置文件的目录,默认情况下,目录是:“./configs”,也就是说他将会在和php执行脚本相同的目录下寻找配置目录。

5、$plugins_dir  插件目录变量

该变量定义Smarty寻找所需插件的目录。默认是在SMARTY目录下的“plugins”目录。如果提供了一个相对路径,Smarty将首先在SMARTY目录下寻找,然后到当前工作目录下寻找,继而到php包含路径中的每个路径中寻找。

6、$debugging  调试变量

它能启动调试控制台。该控制台是一个javascript窗口,该窗口告诉你被包含的模板和应用于当前模板页面的变量。

7、$debug_tpl 调试模板

该变量定义用于调试控制台的模板文件名字。默认情况下,其名字为:debug.tpl,位于Smarty目录中。

8、$debugging_ctrl 调试控制变量

该变量作用是允许以交替的方式启动调试设置。NONE表示不允许交替方式。URL表示当关键词SMARTY_DEBUG出现在QUERY_STRING(查询字符串)中时,针对此脚本的调用,调试被启动。如果$debugging变量是真,则忽略其调试控制变量值。

9、$global_assign全局配置变量

定义一组总是隐式地作用于模板引擎的变量列表。这对于使全局变量或服务器变量可用于所有模板是很方便的,因为无需手工配置它们。在全局配置中的每一元素应 当要么是一全局变量的名字,要么是一键/值对(键是全局数组名,值是对应该全局数组的变量数组)。$SCRIPT_NAME变量默认属于$HTTP_SERVER_VARS数组。

10、$undefined未定义变量

该变量为Smarty设定没有得到定义的变量的值,默认为空.当前仅用来设定全局配置中的未定义变量为一个默认值.

11、$autoload_filters自动加载过滤器变量

如果你希望在每次模板调用过程中加载过滤器,你可以指定他们使用此变量,Smarty将自动为你加载它们.该变量是一个联合数组,在数组中键是过滤器类型,值是过滤器名字所组成的数组.例如:

$smarty->autoload_filters = array(‘pre’ => array(‘trim’, ‘stamp’),

‘output’ => array(‘convert’));

12、$compile_check编译检查变量

每次调用PHP应用程序,Smarty 会试着查看自上次编译时间以来,当前模板是否被修改过.如果修改过了,她会重新编译那个模板.如果模板还没有被编译过,她将编译模板而不管编译检查如何设 置.默认情况下编译检查这个变量设置为true.一旦一个应用程序投入产品中(模板将不会修改了),就不再需要编译检查这一步了.为了最大性能,确定 将$compile_check设为”false”.注意:如果设为了”false”,虽然模板文件被修改,但你不会看到修改结果,因为模板没有得到重新 编译.如果启动了缓存和编译检查,一旦有关模板文件或配置文件被更新,缓存文件将会重建.

13、$force_compile强迫编译变量

强迫Smarty每次调用(重新)编译模板时.这项设置不受$compile_check的限制.默认情况下,它是无效的.它对于开发和调试很方便.但它决不能使用于产品环境下.如果启动了缓存,每次将会重新生成缓存文件.

14、$caching缓存变量

告诉Smarty是否缓存模板的输出.默认情况下,她设为0,或无效.如果模板产生冗余内容,建议打开缓存.这样有利于获得良好的性能增益.你也可以为同一模板设有多个缓存.当值为1或2时启动缓存.1告诉Smarty 使用当前的$cache_lifetime变量判断缓存是否过期.2告诉 Smarty 使用生成缓存时的cache_lifetime值.用这种方式你正好可以在获取模板之前设置缓存生存时间,以便较精确地控制缓存何时失效.

如果启动了编译检查,一旦任何的模板文件或配置文件(有关缓存部分的配置文件)被修改,缓存的内容将会重新生成.如果启动了强迫编译,缓存的内容将总会重新生成.


php-smarty一些常用变量第二篇。

15、$cache_dir缓存目录变量

这是存放模板缓存的目录名.默认情况下,它是:”./cache”,也就是说你可以在和php执行脚本相同目录下寻找缓存目录.你也可以用你自己的自定义缓存处理函数来控制缓存文件,它将会忽略这项设置.

16、$cache_lifetime缓存生存时间变量

该变量定义模板缓存有效时间段的长度(单位秒),一旦这个时间失效,则缓存将会重新生成.如果要想实现所有效果,$caching必须 因$cache_lifetime需要而设为”true”.值为-1时,将强迫缓存永不过期.0值将导致缓存总是重新生成(仅有利于测试,一个更有效的使 缓存无效的方法是设置$caching = false.)

如果启动了强迫编译,则缓存文件每次将会重新生成.要想有效地停止缓存,你可以利用clear_all_cache() 函数清除所有的缓存文件,或者利用clear_cache() 函数清除个别文件(或文件组).

17、$cache_handler_func缓存处理函数变量

你可以提供一个自定义函数来处理缓存文件,而不是通过变量$cache_dir使用内置方法.祥见:cache handler function section

18、$cache_modified_check缓存修改检查变量

如果设置该变量为真,Smarty将分析客户端发送来的If-Modified-Since头信息.如果缓存文件时间戳自上次访问以来没有改变,则发送一个”304 Not Modified”头,而不是缓存文件内容.这种方式仅工作于没有 {insert} 标记的缓存内容.

19、$config_overwrite配置覆盖变量

如果设该变量为真,则从配置文件中读取出来的变量将会互相覆盖.否则,变量将会放到一个数组中.如果你想把配置文件中的数据存储到数组里,这种方式是很有用的,仅仅列出每个元素多次就可以了.默认情况下,设为真.

20、$config_booleanize配置布尔化变量

如果该变量设为真,配置文件中的on/true/yes 和 off/false/no值会自动转化为布尔值.这样的话,你就可以在模板中像{if #foobar#}pp815 {/if}这样使用这些值了.如果foobar为on, true 或 yes,那么 {if}语句就会执行了.默认情况下,该变量值为真.

21、$config_read_hidden配置读取隐藏变量

如果设为真,在配置文件中的隐藏节块(******不会翻译啦)可以从模版中读取出来.典型的你会设为假,这样你可以在配置文件里存放敏感数据,例如数据库参数,而不用担心模版会调用他们.默认情况下,该变量设为假.

22、$config_fix_newlines配置固定换行符变量

如果该变量设为真,那么在配置文件中的mac 和 dos 换行符(r and rn)在语法解析时将会转换为n. 默认情况下,该变量为真.

23、$default_template_handler_func默认模板处理函数变量

该函数在模板不能从它的源目录下获取时会得到调用.

24、$php_handling php处理变量

该变量告诉Smarty怎样处理嵌入到模版中的php代码.有四种可能的设置,默认为SMARTY_PHP_PASSTHRU.注意:改变量的设置不会影响模板里面{php}{/php}标记中的php代码.

原样输出标记.

作为html实体引用标记

从模板中移出标记.

将作为php代码执行标记.

极度不赞成将php代码嵌入到模板中.

25、$security安全变量

安全变量要么是真,要么是假.默认为假.当你不信任模板中的可编辑部分(例如通过ftp方式上传编辑的), 并想通过模板语言减小系统非安全的风险时,安全变量设为真比较适合.设为真会将下面的规则强加于模板语言中,除非特别地 用$security_settings覆盖.

如果变量$php_handling设为了SMARTY_PHP_ALLOW,则会隐式地被修改成SMARTY_PHP_PASSTHRU
PHP函数在IF语句中是不允许的,除了在$security_settings中另行指出.
模板仅可以包含于$secure_dir数组列出的目录中.
本地文件仅可以用{fetch}获取于$secure_dir数组列出的目录中.
{php}{/php} tags are not allowed
不允许有{php}{/php}标记.

PHP函数不允许作为修正器,除了在$security_settings中指出.


php smarty开发中常用到的一些常用变量(三),smarty程序员应该知道的变量。

26、$secure_dir安全目录变量

这是一个与安全有关的本地目录数组变量.当启动安全变量时{include} 和 {fetch}会用到此数组变量.

27、$security_settings安全配置变量

These are used to override or specify the security settings when security is enabled. These are the possible settings:
用于当启动安全变量时覆盖或另行指定安全配置.有以下几种可能的配置:

PHP_HANDLING – 真或假.如果真,则不检查$php_handling的配置.
IF_FUNCS – 这是一个可允许包含在if语句中的php函数名数组.
INCLUDE_ANY – 真或假.如果真,可以从文件系统中包含任何模板,而不管$secure_dir目录设置如何.
PHP_TAGS – 真或假.如果真,{php}{/php}允许在模板中存在.
MODIFIER_FUNCS – 这是一个可用作修正器的php函数名数组.
28、$trusted_dir信任目录变量

信任目录变量仅用在$security启动之后.这是一个所有建立信任的目录数组变量.你可以将php脚本放到这些信任目录中,这些脚本会直接在模板里以{include_php}标记得到执行.

29、$left_delimiter左结束符变量

用于模板语言中,默认是”{“.

30、$right_delimiter右结束符变量

用于模板语言中,默认是”}”.

31、$compiler_class编译类变量

指定Smarty用来编译模板的编译类名.默认为:’Smarty_Compiler’.仅适合于高级用户.

32、$request_vars_order变量顺序变量

请求变量的顺序在这里配置,类似于php.ini中的变量顺序.

33、$request_use_auto_globals自动全局变量

指定Smarty是否使用php的$HTTP_*_VARS[]数组变量(默认$request_use_auto_globals=false) 或$_*[]数组($request_use_auto_globals=true)变量.这对使用了{$smarty.request.*}, {$smarty.get.*}等标记的模板有影响.值得注意的是:如果设置$request_use_auto_globals为真,variable.request.vars.order就无效了但php的gpc_order配置值还有作用.

34、$compile_id编译id变量

永久的编译鉴别号.作为一个可选办法将相同的编译号传递给每个函数调用,你可以设置这个编译id,随后此id将会被隐含地使用.

35、$use_sub_dirs子目录变量

如果你的php环境不允许Smarty创建子目录,则设此变量为假.子目录非常有用,所以尽可能的使用他们.

36、$default_modifiers默认修正器变量

这是一个修正器数组变量,这些修正器隐式地作用于模板中的每个变量.例如:针对HTML,用数组(‘escape:”htmlall”‘)默认地忽略每个 变量;为了使一个变量免除于默认修正器,请将参数为”nodefaults”的特殊”smarty”修正器作用于它,例如: {$var|smarty:nodefaults}.

37、$default_resource_type默认源类型变量

该变量告诉smarty隐式地使用什么源类型.默认值为’file’,也就是说,$smarty->display(‘pp815/index.tpl’);和and      $smarty->display(‘file:index.tpl’);从意思上是一样的.

热门栏目