模板技术,即利用特定的占位符放到一个文档中的某个部位,然后利用相应的方式找到对应的占位符,并将数据实现占位符替换

普通替换

此时用户访问就不需要在访问静态文件,直接访问php文件即可 ,这就是最基本的替换技术

编译:对与那是的php文件提供的内容和html提供的模板颈线编译,编译的结果就是形成一个可执行的PHP编译文件

smarty官网

smarty可以直接缓存,在编译的基础上访问效率更高,二次访问不需要再编译,数据实时效率低,如果访问的数据是实时的,那么不推荐使用smarty,如股票等就不推荐

smarty简单使用

smarty的使用就是将其加入到项目中,并且在项目中实现模板替换的功能

smarty的目标是将用户要显示的数据通过smarty在模板中合适的位置显示出来,这里要实现该功能一共分三步

1.在模板中使用smarty规则来定义数据存放占位符

2.使用smarty->asign('模板中变量名',‘数据’)方法将要显示的数据传递给模板

smarty替换

<?php//加载类include_once './smarty/Smarty.class.php';//实例化$smarty = new Smarty();//提供数据$smarty->assign('hello','hello world');         //数据交给smarty//需要注意php中的hello不需要带$符号,html中的需要带//显示模板数据$smarty->display('7.html');?>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=\, initial-scale=1.0"><title>Document</title>
</head>
<body>{$hello}
</body>
</html>

总结:

1.引入smarty文件

2.实例化smarty对象

3.利用smarty->assign()方法分配给显示模板显示的数据

4.使用smarty->display()方法加载模板文件

5.在模板中利用smarty标记来占位(名字必须和assign方法分配的名字一致,否则匹配不上,且php文件中,不需要带$符号,html文件中名字需要带$符号

smarty配置

smarty提供了很多配置,利用smarty对象的属性来配置

$smarty->debugging = false;                //是否开启debug调试,默认关闭

$smarty->template_dir = "remplates/"                //实际模板目录,如果指定目录不存在,那么系统就会自动去根目录下寻找

$smarty->complate_dir  =“complates_c”                //编译目录,自动生成

$smarty->config_dir = "configs/"                //配置项目录

$smarty->caching = "false"                //是否开启缓存

$smarty->cashe_lifetime=3600;                //缓存生命周期,单位s

$smarty->left_delimiter="{"                //左界定符

$smarty->right_delimiter= "}"                //右界定符

通常使用smarty时,需要设置的就是模板路径template_dir和可能冲突的分隔符left/right_delimiter

在项目开发阶段,一般不会开启缓存模式(数据更新频繁)

smarty模板变量

模板变量就是在模板中被分配的变量,以及如何使用smarty规则在模板中解析变量

在smarty模板中,我们将模板变量分为三类

PHP分配变量,即利用assign方法分配的变量

Smarty保留变量,包括超全局预定义变量和smarty的内置变量

自定义变量,用户在模板中去定义的变量(通常不用)

PHP分配变量

理论上PHP可以分配任意数据类型给模板进行解析,通常数据也就三种

标量数据:之间使用标记输出的数据

数组数据:在smarty模板中可以使用下标或通过“.”来实现访问

对象数据:通过对象访问符来访问->       ::

<?php//加载smarty类include_once "./smarty/Smarty.class.php";//实例化对象$s = new Smarty();//标量分配$s->assign('str','这是标量分配的数据');//数组分配,用点或者下标都可以,索引数组,关联数组$s->assign('arr',array(1,2,3));$s->assign('arr1',array('k1'=>'v1','k2'=>'v2'));//分配对象class p{public $name = 'Tom';public $age = 21;}$s->assign('obj',new p());//显示$s->display('9.html');?>
<html><header></header><body>{$str}<br><!-- 索引数组访问 -->{$arr.1},{$arr[2]}<br><!-- 关联数组访问 -->{$arr1.k1},{$arr1['k2']}<br><!-- 对象访问 -->{$obj->name},{$obj->age}</body>
</html>

smarty保留变量

smarty考虑到用户会需要经常使用的系统变量或者内部变量,这类变量通常以$samrty开始,然后类的关键字

GET数据:{$smarty.get.名字}

POST数据:{$smarty.post.名字}

session数据:{$smarty.session.名字}

cookie数据:{$smarty.cookie.名字}

REQUEST数据:{$smarty.request.名字}

server数据:{$smarty.server.大写名字}

时间戳:{$smarty.now}

模板路径:{$smarty.current_dir}

模板名字:{$smarty.template}

<?php//加载smarty类include_once "./smarty/Smarty.class.php";//实例化对象$s = new Smarty();//设置预定义变量$_GET['name'] = 'TOM';$s->display('10.html');
?>
<?php//加载smarty类include_once "./smarty/Smarty.class.php";//实例化对象$s = new Smarty();//设置预定义变量$_GET['name'] = 'TOM';$s->display('10.html');
?>

自定义变量

<html>{assign var = 'test' value = 'hello world'}        //定义自定义变量{$test}        //后面可以直接使用变量
</html>

配置文件

在smarty中,提供了一种为smarty提供个性化服务的配置文件,smarty文件可以直接使用txt格式文件,可以配置多个#代表注释,[局部配置]

<html><!-- 配置文件加载 -->{config_load file = 'config.txt'}<body bgcolor="{$smarty.config.bgcolor}">{$smarty.get.name}<br>{$smarty.now}<br>{$smarty.template}<br>{$smarty.config.bgcolor}</body>
</html>

内置函数

smarty内置函数就是,smarty针对分支,循环等数据处理封装的一套便于在模板中显示和操作数据的语法格式

1.分支处理:

smarty中提供了一套if分支用于简单的逻辑判定,语法格式为{if}{elseif}{/if}

<html><header></header>{if isset($smarty.post.name)}{$smarty.post.name}{else}没有数据{/if}
</html>

2.循环结构:

foreach:遍历所有类型的数组,主要用于php分配的数据的输出的显示

<html><header></header><body><!-- 形式一 -->{foreach $arr as $val}<!-- 显示$val的数据 -->{/foreach}<!-- 形式二 -->{oreach from=arr key='键名' item='值名'} {$键名}{$值名}<!-- 以下方式也能获得数据 -->{$值名@key}{/foreach}</body>
</html>
<?php//加载smarty类include_once "./smarty/Smarty.class.php";//实例化对象$s = new Smarty();$arr = array('user'=>'张三','pass'=>1234656);$s->assign('user',$arr);$s->display('12.html');
?>
<html><header></header><body>{foreach from=$user key='k' item='v'}{$k}:{$v}<br>{$k}:{$v@key}:{$v}{/foreach}</body>
</html>

在smarty中,为foreach提供了很多可访问的属性,通过{$smarty.foreach.名字.属性}或者{$循环值@属性}来实现访问

index:当前数据索引(循环内部)

iteration:当前循环的此时(循环内部)

first:首次循环(循环内部)

last:最后一次循环(循环內部)

show:循环是否执行判定:true表示循环有数据,false表示没有数据(未执行)

total:foreach执行的总次数(循环内外都可以使用)

<html><header></header><body>{foreach from=$user key='k' item='v'}{$k}:{$v}<br>{$k}:{$v@key}:{$v}{/foreach}{assign var='user1' value = array('username','age','gender')} <table border="1">{foreach $user1 as $value}{if $value@first}第一次执行循环:<tr><th>下标</th><th>循环次数</th><th>值</th></tr>{/if}<tr><td>{$value@index}</td><td>{$value@iteration}</td><td>{$value}</td></tr>{/foreach}</table>{if $value@show}循环有数据,一共循环了{$value@total}次{/if}</body>
</html>

section:遍历

遍历索引数组,通常更多的时用于没有分配数据的循环

<html><body>{section name=任意命名 loop=传递数组|指定循环次数[step=步长][max=最大循环次数]}{$传递数组[section名字]遍历元素下标}</section>{assign var='arr' value=array(1,2,3,4,5)}{section name='id' loop=$arr max=4}{$arr[id]}{/section}</body>
</html>

文件包含 {include file= 'xxx.html'}

Smarty模板技术相关推荐

  1. Smarty模板技术学习

    模板引擎技术:使得php代码和html代码分离的技术就称为"模板引擎技术" 自定义smarty模板技术实现 <?php//迷你smarty原理 class MiniSmart ...

  2. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第51讲:PHP中smarty模板技术介绍

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第51讲:PHP中smarty模板技术介绍 smarty模板技术PHP程序设计中必须掌握的知识,本文结合贵阳网站建设中的案例介绍了基于smarty技术的员工列 ...

  3. Smarty模板技术学习(二)

    本文主要包括以下内容 公共文件引入与继承 内容捕捉 变量调剂器 缓存 Smarty过滤器 数据对象.注册对象 与已有项目结合 公共文件引入与继承 可以把许多模板页面都用到的公共页面放到单独文件里边,通 ...

  4. smarty详细使用教程(韩顺平smarty模板技术笔记)

    MVC是一种开发模式,强调数据的输入.处理.显示是强制分离的 Smarty使用教程 1.如何配置我们的smarty 解压后把libs文件夹放在网站第一级目录下,然后创建两个文件夹 templates ...

  5. smarty模板引擎(一)基础知识

    一.基本概念 1.什么是mvc?     mvc是一种开发模式,核心思想是:数据的输入.数据的处理.数据显示的强制分离. 2.什么是smarty?     smarty是一个php的模板引擎.更明白的 ...

  6. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第52讲:PHP仿smarty模板的实现

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第52讲:PHP仿smarty模板的实现 描述: smarty模板技术为PHP程序设计中处理和界面的分离提供了很大的便利,有必要了解其设计思路和底层机制,本文 ...

  7. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第54讲:PHP smarty模板内建函数

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第54讲:PHP smarty模板内建函数 描述: smarty模板技术为PHP程序设计中处理和界面的分离提供了很大的便利,有必要了解内建函数等方面的内容,方 ...

  8. 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第53讲:PHP smarty模板配置及变量操作

    陈力:传智播客古代 珍宝币 泡泡龙游戏开发第53讲:PHP smarty模板配置及变量操作 描述: smarty模板技术为PHP程序设计中处理和界面的分离提供了很大的便利.如果分配整型.小数.布尔型. ...

  9. php smarty 原理,php模板原理PHP模板引擎smarty模板原理浅谈

    mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...

最新文章

  1. 马斯克为了解决堵车挖的隧道,已经堵上了
  2. python3 字符串替换 replace translate re.sub
  3. python爬虫的scrapy安装+pymongo的安装
  4. js json制表符报错_JS自学_常见错误复盘
  5. 萨蒂扬软件技术(南京)研发中心”落户高新区
  6. css --- flex布局的应用(between)
  7. 绘图基础语法与常用参数
  8. 【AI视野·今日Robot 机器人论文速览 第十一期】Mon, 21 Jun 2021
  9. python如何和qt交互_Python 之Pyqt5操作交互处理,原来这么简单!
  10. matlab 三维绘制
  11. plt绘制1 / (1 + np.exp(-x))
  12. 沃尔沃汽车警告称:半导体短缺将持续到明年
  13. 10.2. Incron - cron-like daemon which handles filesystem events
  14. 何建坤:实施能源革命战略 促绿色低碳发展
  15. Netty实现高性能IOT服务器(Groza)之手撕MQTT协议篇上
  16. 《人工智能》之《计算智能》习题解析
  17. qcom usb驱动下载_艾肯Mobile Q驱动下载
  18. 环比同比YOY\QoQ及QQ\PP图Q-Q\P-P…
  19. 【USACO 2020 January Silver】Loan Repayment 题解
  20. 语义分割之边缘准确率提升

热门文章

  1. Vue脚手架的基本使用
  2. php 社会实践报告,汉语言文学社会实践报告
  3. 【日志系统】Loki日志监控 - 入门初体验
  4. LOVE, SO GOOD.歌手:平井 大日语罗马音注释
  5. java语言与c 相比 有哪些优点_Java编程和C语言分别有哪些优势
  6. 技术类公众号分享,看到最后哟!
  7. java highcharts_java后台生成HighCharts图片
  8. 第七篇(下),MPC工程化总结
  9. RFID技术管理工具
  10. AppEx LotWan广域网加速系统为办公系统进行网络加速