普通变量与保留变量
1,普通变量
一共有两种声明普通变量的方法。
第一种:上面的例子已经使用过,即在index.php文件中使用$smarty->assign('add',$add);
第二种:在模板文件中声明(html中),即{assign var='add' value='值'}
代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <!--html的注释--> {*smarty模板的注释*} {assign var='add' value='www.php.cn'} 我们网站的网址是:{$add} </body> </html>
运行结果:
使用:{$add}
注意:也可以定义与使用数组。假若上面定义的add为一个一维数组,使用时即:{$add[2]},{$add['aa']},{$add.aa}等等使用方式。
2,保留变量
Smarty中有一个特殊的变量(就是smarty)可以通过这个变量很容易就可以访问到一些环境变量。就像PHP中的超全局变量一样神奇。
注意:在使用这个保留变量的时候:smarty是对于大小写敏感的,我们需要的是小写的smarty
例子:
一、使用smarty访问PHP中的超全局数组变量:
1、获取$_GET {$smarty.get.name} 获取get中的name值
2、获取$_POST {$smarty.post.name} 获取post中的name值
3、获取$_COOKIE {$smarty.cooke.name} 获取cookie中的name值
同理,还可以获取$_SERVER, $_ENV 和 $_SESSION等等
注意:虽然Smarty提供了较方便直接访问PHP超全局变量的方法,但必须谨慎使用。 直接访问超全局变量会弄乱应用程序底层代码和模板语法。 最佳的实践是从PHP将需要的变量对模板进行赋值再使用。
二、获取当前时间戳
{$smarty.now}其原理就是调用了time()函数
三、直接访问PHP常量
{$smarty.const.常量名}即{$smarty.const.AGE}
PHP定义常量
运行结果:
四、其他
获取配置变量:{$smarty.config}
返回当前模板名称:{$smarty.template}
返回当前模板对象:{$smarty.template_object}
返回当前目录名称:{$smarty.current_dir}
等等