模板引擎的作用是什么
对PHP语言熟悉的程序员就会知道有个Smarty的名词,那么这个具体是什么呢?smarty是一个使用PHP编写的PHP模板引擎,是目前业务最著名,功能最强大的一种PHP模板引擎,程序逻辑逻辑与外在内容的分离,简单的讲就是让PHP和HTML相分离,让程序员和美工同时进行开发,使的程序员改变程序的逻辑内容时不会影响到美工的页面设计,美工重新修改页面时不会影响到程序的程序逻辑。
官网地址
文件目录
粗略的看一下几个主要文件目录,根目录下有个demo文件夹,里面放的就是使用smarty的一些例子,那么还有一个libs文件夹,里面放置的是smarty类文件,其中Smarty.class.php就是模板引擎的主文件,那么用的时候就是引入这个主文件进行实例化然后操作,plugins这个目录放置的是smarty的插件,其它目录有兴趣的下去了解一下。
Smarty的引入与实例化
将Smarty的demo文件和主要类文件提出来
<?php
require_once '/smarty/Smarty.class.php';
$smarty = new Smarty();
Smarty的配置
1、五配置
$smarty->left_delimiter = '{';//左定界符
$smarty->right_delimiter = '}';//右定界符
$smarty->template_dir = 'tpl';//html模板的地址
$smarty->compile_dir = 'template_c';//模板编译生成的文件
$smarty->cache_dir = 'cache';//缓存
$smarty->caching = true;//开启缓存
$smarty->cache_lifetime = 120;//缓存时间
在模板里面出现{}那么里面的任何语句都交给smarty去处理,在根目录下创建三个目录。
2、常用两方法
//模板变量赋值
$smarty->assign('变量名','变量值');
//展示模板
$smarty->display('test.html');
Smarty基本语法
//模板变量赋值
$arr = array('title'=>'网站标题','content'=>'网站内容');
$smarty->assign('arr',$arr);
//模板变量取值
{$arr.content} OR {$arr['content']}
Smarty变量调节器(相当于函数)
1、单词首字母大写
$smarty->assign('str','hello word');
{$str|capitalize}
2、字符串连接
$smarty->assign('str','hello word');
{$str|cat:' gsy'}
3、日期格式化
$smarty->assign('date',time());
{$date|date_format}
4、为未赋值或为空的变量指定默认值
$smarty->assign('data');
{$data|default:'apple'|capitalize}
5、转码 escape 用于html转码,在没有转码的变量上转换单引号,十六进制转码,十六进制美化,或者javascript转码,默认是html转码
$smarty->assign('url','https://www.smarty.net/docs/zh_CN/language.modifier.escape.tpl');
{$url|escape:'url'}
为什么要对url转码?因为在程序里面有很多符号会影响到PHP等等脚本语言的正常运转。
6、转换大小写
$smarty->assign('str','Happy New Year');
{$str|lower}
{$str|upper}
7、将所有换行符替换成HTML标签
$smarty->assign('str',"Happy New Year\nHappy New Year\nHappy New Year");
{$str|nl2br}
条件判断句式
1、常用的条件修饰符
eq(==)
neq(!=)
gt(>)
lt(<)
2、基本句式
{if $name eq 'gsy'}
Hello gsy
{elseif $name eq 'wyx'}
Hello wyx
{else}
Hello
{/if}
使用修饰符时必须和变量用空格隔开
Smarty的foreach循环
$arr = array(0=>array('name'=>'霍建华','age'=>'20'),1=>array('name'=>'林心如','age'=>'18'));
$smarty->assign('arr',$arr);
{foreach item=person from=$arr}
<p>姓名:{$person.name}</p>
<p>年龄:{$person.age}</p>
{/foreach}
//从smarty3开始支持与PHP foreach一样的语法
{foreach $arr as $person}
<p>姓名:{$person.name}</p>
<p>年龄:{$person.age}</p>
{/foreach}
Smarty的文件引用
//sitename属性仅仅只能在引入文件中使用
{include file='header.html' sitename='网站主体'}
使用PHP内置函数
$smarty->assign('date',time());
{'Y-m-d'|date:$date}
$smarty->assign('str','Hello word');
{'word'|str_replace:'Beijin':$str}