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();//清楚所有缓存

PHP之Smarty相关推荐

  1. smarty mysql demo_PHP Smarty模版简单使用方法

    本文实例讲述了PHP Smarty模版简单使用方法.分享给大家供大家参考,具体如下: Index.php: require('../libs/Smarty.class.php'); $smarty = ...

  2. php smarty关闭缓存,php+Smarty的缓存操作

    一.使用缓存 要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可. 使用cache_lefetime指定缓存生存时间,单位为秒 要对相同页面生成多个不同的缓存,在 ...

  3. php smarty模板引擎 性能,smarty性能低?直接使用php模板引擎吧

    skymvc框架使用的php模板引擎 1.[代码][PHP]代码 class smarty{ public $template_dir = '';//模版文件夹 public $cache_dir = ...

  4. smarty的简单分页

    以下是模板中的smarty代码,用smarty简单的代入相关的变量就行了,非常简单,但是在php代码中还要传入page这个参数.我觉得这样分挺好,非常简单.我越来越喜欢用smarty了  {if $p ...

  5. ecshop模板smarty foreach详解 [ECshop]

    {foreach},{foreachelse} {foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 ...

  6. PHP的Smarty

    原理: 把模板文件编译成php文件,然后每次都去读取下模板的修改时间,没有修改就不编译.然后include这个"编译"后的PHP文件. 所谓编译也就是模板用正则替换成含PHP代码的 ...

  7. Smarty中文手册,Smarty教程,Smarty模板的入门教材

    Smarty中文手册,Smarty教程,Smarty模板的入门教材 首先,这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的,不代表任何人的意见和观点.对他们的无私奉献精神,我们表示感谢, ...

  8. smarty mysql_Smarty处理mysql查询数组

    Smarty处理mysql查询数组 MySQL的查询结果一般是一个数组,而不是所有结果集.因此我们需要将结果全部存到数组中进行处理,然后就可以很轻松的再Smarty中使用了. PHP Mysql 代码 ...

  9. Smarty的配置与高级缓存技术

    前言 Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface. 学习和使用Smarty,没有应用到它的缓存技术是一个很大的损失,它可以将用户最终看到的HMTL文件缓存 ...

  10. smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty。...

    smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty. function smarty_modifier_trunca ...

最新文章

  1. 让程序员头疼的文档问题怎么破?试试活文档
  2. 科研找到属于自己的思想
  3. adams建立一绳索不带滑轮_建立企业精益供应链,必须先解开现有绳索 系列(一)...
  4. 【推荐】SAP关闭正在执行的缓慢的程序
  5. 关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)
  6. SAP Spartacus里使用injection token提供默认配置的一个例子
  7. python处理网络文字流,设置为utf8编码
  8. 中国剩余定理及其拓展
  9. Python 使用 Scrapy 发送 post 请求的坑
  10. mysql for update_mysql SELECT FOR UPDATE语句使用示例
  11. datastage 使用小结
  12. C/C++基础一:stack heap
  13. 【mybatis深度历险系列】mybatis中的动态sql
  14. 嵌入式物联网技术开发指导349014857
  15. git中提交显示!rejected,如何解决?
  16. 域名whois查询接口代码
  17. Critical Reviews | 南农邹建文组综述全球农田土壤抗生素与耐药基因分布
  18. R语言--rep函数
  19. java word转二进制_DWORD WORD到INT的转换
  20. 车联网上云最佳实践(一)

热门文章

  1. W11系统VMware网卡vmnet8显示未识别的网络
  2. 小葵花妈妈课堂开课了:《ArrayList源码浅析》
  3. img html 文件怎么打开,img文件怎么打开?img文件用什么打开?
  4. 如何在android lolipop中开启google now
  5. 无锡市计算机表演赛举办方,21届计算机表演赛无锡赛区方案.doc
  6. 在信息不完全对称时,你可以用你的“空城计”虚张声势
  7. CC2652RB硬件I2C读取FXOS8700CQ加速度传感器
  8. cocos2d-x 3.17.2 调用cocos studio发布的csb文件,遇到按钮图片显示不正常问题
  9. 数学猜想验证步骤_“猜想——验证” 数学学习的重要方法
  10. 谷歌浏览器Chrome播放rtsp实时视频,并抓图、录像、回放、倍速等