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();//清楚所有缓存
PHP之Smarty相关推荐
- smarty mysql demo_PHP Smarty模版简单使用方法
本文实例讲述了PHP Smarty模版简单使用方法.分享给大家供大家参考,具体如下: Index.php: require('../libs/Smarty.class.php'); $smarty = ...
- php smarty关闭缓存,php+Smarty的缓存操作
一.使用缓存 要开启smarty的缓存,只需将caching设为true,并指定cache_dir即可. 使用cache_lefetime指定缓存生存时间,单位为秒 要对相同页面生成多个不同的缓存,在 ...
- php smarty模板引擎 性能,smarty性能低?直接使用php模板引擎吧
skymvc框架使用的php模板引擎 1.[代码][PHP]代码 class smarty{ public $template_dir = '';//模版文件夹 public $cache_dir = ...
- smarty的简单分页
以下是模板中的smarty代码,用smarty简单的代入相关的变量就行了,非常简单,但是在php代码中还要传入page这个参数.我觉得这样分挺好,非常简单.我越来越喜欢用smarty了 {if $p ...
- ecshop模板smarty foreach详解 [ECshop]
{foreach},{foreachelse} {foreach} 用于像循环访问一个数字索引数组一样循环访问一个关联数组,与仅能访问数字索引数组的{section}不同,{foreach}的语法比 ...
- PHP的Smarty
原理: 把模板文件编译成php文件,然后每次都去读取下模板的修改时间,没有修改就不编译.然后include这个"编译"后的PHP文件. 所谓编译也就是模板用正则替换成含PHP代码的 ...
- Smarty中文手册,Smarty教程,Smarty模板的入门教材
Smarty中文手册,Smarty教程,Smarty模板的入门教材 首先,这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的,不代表任何人的意见和观点.对他们的无私奉献精神,我们表示感谢, ...
- smarty mysql_Smarty处理mysql查询数组
Smarty处理mysql查询数组 MySQL的查询结果一般是一个数组,而不是所有结果集.因此我们需要将结果全部存到数组中进行处理,然后就可以很轻松的再Smarty中使用了. PHP Mysql 代码 ...
- Smarty的配置与高级缓存技术
前言 Smarty 是一个出色的PHP模板引擎,它分离了逻辑代码和user interface. 学习和使用Smarty,没有应用到它的缓存技术是一个很大的损失,它可以将用户最终看到的HMTL文件缓存 ...
- smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty。...
smarty_modifier_truncate,无或者有md_substr的情况下都能正确截取字符串的php函数,可用于smarty. function smarty_modifier_trunca ...
最新文章
- 让程序员头疼的文档问题怎么破?试试活文档
- 科研找到属于自己的思想
- adams建立一绳索不带滑轮_建立企业精益供应链,必须先解开现有绳索 系列(一)...
- 【推荐】SAP关闭正在执行的缓慢的程序
- 关于字符编码,你所需要知道的(ASCII,Unicode,Utf-8,GB2312…)
- SAP Spartacus里使用injection token提供默认配置的一个例子
- python处理网络文字流,设置为utf8编码
- 中国剩余定理及其拓展
- Python 使用 Scrapy 发送 post 请求的坑
- mysql for update_mysql SELECT FOR UPDATE语句使用示例
- datastage 使用小结
- C/C++基础一:stack heap
- 【mybatis深度历险系列】mybatis中的动态sql
- 嵌入式物联网技术开发指导349014857
- git中提交显示!rejected,如何解决?
- 域名whois查询接口代码
- Critical Reviews | 南农邹建文组综述全球农田土壤抗生素与耐药基因分布
- R语言--rep函数
- java word转二进制_DWORD WORD到INT的转换
- 车联网上云最佳实践(一)
热门文章
- W11系统VMware网卡vmnet8显示未识别的网络
- 小葵花妈妈课堂开课了:《ArrayList源码浅析》
- img html 文件怎么打开,img文件怎么打开?img文件用什么打开?
- 如何在android lolipop中开启google now
- 无锡市计算机表演赛举办方,21届计算机表演赛无锡赛区方案.doc
- 在信息不完全对称时,你可以用你的“空城计”虚张声势
- CC2652RB硬件I2C读取FXOS8700CQ加速度传感器
- cocos2d-x 3.17.2 调用cocos studio发布的csb文件,遇到按钮图片显示不正常问题
- 数学猜想验证步骤_“猜想——验证” 数学学习的重要方法
- 谷歌浏览器Chrome播放rtsp实时视频,并抓图、录像、回放、倍速等