标签:自己 smart run 项目 属性 img bst 语句 array
概述:一般情况下在HTML中实现某些动态数据显示功能时,会在HTML文件中插入一些PHP语句来实现动态数据显示的功能,但是PHP代码和HTML混编在一起不利于网站的改版和升级。因此模板机制便应运而生。
基本原理:
视图文件
在需要插入动态数据的部分使用一段特定的字符替代(此处使用了{$title}和{$content})
PHP文件
第二步:数据库中提取相应的动态数据,赋给变量。此处省略从数据库中提取数据的部分
第三步:加载视图文件的文本内容,并赋值给一个变量
第四步:替换读取的视图文件文本内容相应的字符,此处为把{$title}替换成$title的值,把{$content}替换成$content的值
第五步:输出替换完成的视图文件的文本
得到运行结果:
更进一步的优化方式:
封装Smarty模板引擎文件:
模板调用文件:
这样优化编译后,使用模板调用文件编写视图文件中需要导入的数据的参,然后在调用模板引擎文件使得编写的参导入到视图文件中并显示。
这样做的好处就是不用每次都编写替换语句,而且每个视图对应自己的模板调用文件,使得网站文件更加规范,同时维护也更加便利。
Smarty文件及注意事项:
3.创建目录templates作为模板目录(smarty默认模板目录既templates)
4.模板文件中特殊标记边界符{}与其他代码(CSS的{})冲突,应在其他{}中左侧加空格。
5.当第一次调用smarty时,会创建一个目录templates_c,并在其中创建一个编译文件,当第二次调用smarty时,系统会判断当前smarty与templates_c中的文件是否一致,一致的化直接调用templates_c中的编译文件
6.smarty.class.php中的属性:left_delimiter和right_dilimiter分别对应特殊标记边界符的左右边界符号,且可以修改,默认为{}
7.模版文件的注释格式为:{*注释内容*}。且该注释文本不会出现在浏览器的源代码中
8.默认方法-> ①$smarty->assign(‘特殊标记’,$date)
视图文件中{$特殊标记}
把$date的值替换至{$特殊标记}的位置
②$arr = array(‘text1’,’text2’,text3);
$smarty->assign(‘特殊标记’,$arr);
视图文件中{$特殊标记[0]}{$特殊标记[1]}{$特殊标记[2]}
数组元素text1~text3的值分别替换至{$特殊标记[0]~[2]}的位置
引擎调用文件
模版文件:
显示结果:
结论:把多个字符进行拼接
引擎调用文件:
模板文件:
显示结果:
结论:把时间戳按照给定的格式进行转化
引擎加载文件:
模板文件:
结论:设置某个变量的默认值,当变量为空时,则显示默认值
格式:{$特殊标记|lower}
格式:{$特殊标记|upper}
结论:把对应变量的值全部转化为大写或小写
格式:{$变量名|escape}
结论:浏览器将不解析变量中的(html等)标签,直接输出标签和其他文本
格式:{$特殊标记|strip_tags}
结论:浏览器将不解析变量中的(html等)标签,输出其他文本,不输出标签
格式:{$特殊标记|nl2br}
结论:把变量中的\n转化为<br/>
格式:{$特殊标记|replace:字符串1:字符串2}
结论:把变量中的字符串1全部替换成字符串2
格式:{$特殊标记|string_format:’%d’}
结论:把变量按照给定的格式输出
格式:{$特殊标记|truncate:字符串长度:’符号’}
结论:把变量截取指定长度的字符,其中结尾处用设定的符号结尾,并且符号的长度也计算在截取的长度之中,符号默认值为…。截取按照字节截取(一汉字=3字节)
e.g. 可以通过在php.ini中开启扩展:php_mbstring.dll使得截取字符时,按符号截取,而不是字符截取,此时(一单位截取长度 = 一汉字)
作用类似于get传递及获取
把get得到的变量的值输出相应位置
同上,为把通过post获取到的变量值输出相应的位置
把cookie中相应的变量的值输出相应的位置
把session中相应的变量的值输出相应的位置
返回当前的时间戳
语法:
{foreach from=数组 item=元素的值的名 key=元素的键名 name=名称}
{foreachelse}
{/foreach}
语法:
{include file=”文件名”变量名=变量值}
语法:
{if 条件}
执行语句
{elseif 条件2}
执行语句
{else}
执行语句
{/if}
标签:自己 smart run 项目 属性 img bst 语句 array
原文地址:http://www.cnblogs.com/kosmos/p/6189002.html