PHP之Smarty

PHP之Smarty

Smarty简介

smarty的引入

1. 为了分工合作,模板页面中最好不要出现php代码
2.需要将表现和内容相互分离
3.通过smarty把php和html页面显示在页面上

官方smarty

plugins:自定义插件
sysplugins:系统插件
Smarty.class.php:Smarty核心文件

smarty的属性和方法

class Smarty{
    public $left_delimiter="{";//左界定
    public $right_delimiter="}";//右界定
    protected $template_dir=array('./templates/');//默认模板文件目录
    protected $compile_dir='./templates_c';//默认混编目录
    protected $config_dir=array('./configs/');//默认配置目录
    protected $cache_dir='./cache/';//默认缓存目录
    public function setTemplateDir(){}//设置模板文件夹
    public function setConfigDir(){}//设置配置文件夹
    public function setCompileDir(){}//设置混编文件夹
    public function setCacheDir(){}//设置缓存文件夹
}

smarty简单的操作

1. 将libs目录拷贝到站点下,改名为smarty
2. 创建模板目录templates
3. 创建混编目录templates_c
4. 在站点下创建1-demo.php
5. 在模板下创建1-demo.html
require './smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->assign('title','锄禾');
$smarty->display('1-demo.html');
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{$title}
</body>
</html>

smarty的注释

语法:{* *}
注意:smarty注释在源码中看不见
smarty的注释只要在左右定界符里面加上*就可以了

smarty变量

smarty中变量有3种,普通变量、配置变量、保留变量
普通变量
普通变量就是我们自定义的变量

方法一:在PHP中定义

$smarty->assign('name','tom');//给变量赋值

方法二:可以在模板中定义

语法:{assign var='变量名' value='值'}
例如:{assign var='sex' value='男'}
简化写法:{$add='北京'}
保留变量
smarty中有一个特殊的保留变量(内置变量),类似于PHP中所有的超全局变量、常量、时间等信息
表达式描述
{$smarty.get.name}获取get提交的name的值
{$smarty.post.name}获取post提交的name的值
{$smarty.request.name}获取get和post提交的name的值
{$smarty.cookies.name}获取cookie中name的值
{$smarty.session.name}获取session中name的值
{$smarty.const.name}获取常量name
{$smarty.server.DOCUMENT_ROOT}获取服务器的虚拟目录地址
{$smarty.config.name}获取配置文件中的值
{$smarty.now}时间戳
{$smarty.ldelim}获取左界定
{$smarty.rdelim}获取右界定
配置变量
从配置文件中获取变量值,配置文件默认的文件夹是configs
1. 在站点下创建配置文件夹configs
2. 在configs目录下创建smarty.conf文件
color=#FF0000
size=50px
[spring] # 配置文件中的段落也称作节
color=#009900
size=20px
[winter]
color=#000005
size=5px

HTML页面

<!DOCTYPE html>
<html lang="en">
<!--config_loads默认目录就是当前目录的configs目录
它会自动找当前目录的configs,所以不需要写./configs/的文件-->
<!--这里section引入了节-->
{config_load file='smarty.conf' section=''}

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body{
            color: {#color#};
            font-size:{$smarty.config.size};
        }
    </style>
</head>
<body>
{if $smarty.get.score gt 90}
    A
{elseif $smarty.get.score gte 80}
    B
{else}
    C
{/if}
锄禾日当午
</body>
</html>

PHP页面

require './smarty/Smarty.class.php';
$smarty = new Smarty();
$smarty->assign('title','锄禾');
$smarty->display('1-demo.html');
小结:
1. 要使用配置文件中的值,首先必须引入配置文件,通过{config_load}标签引入
2. 获取配置文件中的值的方法有两种
(1):{#变量名#}
(2):{$smarty.config.变量名}
配置文件中的注意事项:
1. 全局的一定要写在节的前面
2. 配置文件中[]表示节
3. 配置文件中的注释是#

smarty运算符

运算符描述
eq相等
neq不等于
gt大于
lt小于
lte小于等于
gte大于等于
is even是偶数
is odd是奇数
is not even不是偶数
is not odd不是奇数
not
mod求模取余
div by被整除
is [not] div by是否被某数整除

判断

语法:
{if 条件}
{elseif 条件}
{else}
{/if}

数组

smarty中访问数组的方式有两种:
1. 数组[下标]
2. 数组.下标

PHP页面

require './smarty/Smarty.class.php';
$smarty = new Smarty();
$stu = ['tom','berry'];//索引数组
$stu1 = array('name'=>'zhangsan','age'=>22);
$goods = array(
    array('name'=>'手机','price'=>3352),
    array('name'=>'钢笔','price'=>10)
);
$smarty->assign('stu',$stu);
$smarty->assign('stu1',$stu1);
$smarty->assign('goods',$goods);
$smarty->display('2-demo.html');

HTML页面

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
学生:{$stu[0]}-{$stu.1}<br>
学生1:{$stu1['name']}的年龄是{$stu1.age}<br>
商品:
<ul>
    <li>{$goods[0]['name']}</li>
    <li>{$goods.0.price}</li>
    <li>{$goods.1['name']}</li>
    <li>{$goods[1].price}</li>
</ul>
{for $i=1 to 5}
    {$i}:锄禾日当午<br>
{/for}
<hr>
{for $i=1 to 5 step=2}
{$i}:锄禾日当午<br>
{/for}
</body>
</html>

循环

smarty中支持的循环有:{for}、{while}、{foreach}、{section}。用的最多的是foreach循环
语法:
{foreach 数组 as $k=$v}
{foreachelse}
	没有输出
{/foreach}
foreach的属性:
@index:从0开始的索引
@iteration:从1开始的编号
@first:是否是第一个元素
@last:是否是最后一个元素
{for $i to 5}
{$i}:锄禾日当午<br>
{/for}
<hr>
{for $i to 5 step=0}
步长为2的时候{$i}:锄禾日当午<br>
{/for}
for语法:
{for 初始值 to 结果值 [step 步长]}
{/for}
while语法:
{while 条件}
{/while}
注意:while条件有的和php类似

自定义变量修饰符

变量修饰符存放在plugins目录中
规则:
1. 文件的命名规则:modifier.变量修饰器名称.php
2. 文件内方法命名规则:smarty_modifier_变量修饰器名称(形参...){}

避免smarty解析

smarty的定界符和css、js、中的大括号产生冲突的时候,css、js中的大括号不要被smarty解析
1. 更换定界符
2. 左大括号后面添加空白符
3. 用{literal}{/literal}来包含js和CSS

缓存

页面缓存,空间缓存,数据缓存,smarty中的缓存就是页面缓存
开启缓存:$smarty->caching=true或者1   //开启缓存
缓存的更新:
1. 删除缓存,系统会重新生成新的缓存文件
2. 更新模板文件,配置文件,缓存自动更新
3. 过了缓存的生命周期,默认是3600秒
4. 强制更新:$smarty->force=true;
5. 缓存的生命周期:$smarty->cache_lifetime=-1|0|N
-1:永远不过期
0:立即过期
N:有效期是N秒,默认是3600秒
局部不缓存:
1. 变量不缓存   {$变量名 nocache}
2. 整个块不缓存:{nocache}  {/nocache}

例子:

不缓存:{$smarty.now nocache}
不缓存:{nocache}
{$smarty.now}<br>
{/nocache}
缓存分页
$smarty->caching=1;
$smarty->display('模板页面','识别id');
缓存集合
$smarty->display('模板页面','$color|$size');
清楚缓存
$smarty->clearCache('模板',[识别id]);
$smarty->clearAllCache();//清楚所有缓存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值