Smarty模板引擎

今天讲的是Smarty:
   一、   Smarty是使用PHP写出来的模板引擎,实现了后台逻辑(*.php)和外在内容(前台页面)分离,将php程序员和美工设计人员进行分离。应用Smarty的网站程序逻辑的改变不会影响美工页面的设计,美工设计从新修改之后不会影响到程序逻辑。
     1.优点:在比较大的项目中才得以体现:当后数据没有变化的时候,只需一次编译,只有当后台数据发生变时,页面才需要重新编译。(运行速度快,缓存技术(catch),函数(插件)丰富)
     2.不适合使用的地方:小项目、数据需要时时更新(股市行情)
二、Smarty的安装
安装类似于ecshop。
只需要将libs文件夹拷贝到服务器目录下即可。
templates:存放页面模板,路径任意。
templates_c:存放编译之后的页面模板。(在后台数据部发生变化时,打开网站调用的是编译之后的模板。里面的文件系统自动生成)
configs:模板所需要的特殊的配置文件
cache:存放Smarty缓存内的模板(临时)
三、应用Smarty
1.引入Smarty.class.php的文件
2.创建Smarty对象
3.更改模板存放路径及编译路径(templates_dir  compile_dir)
4.修改界定符(left_delimiter  right_delimiter)
5.编写模板(*.tpl(就是html))里面的数据部分用Smarty变量表示
6.在php文件中用assign方法给模板中的变量赋值
7.在php文件中用display方法将模板及数据显示。
四、Smarty中的变量
1.模板中变量的声明
一般变量:<{$name}>
数组变量:索引数组和关联数组
 索引数组:<{$arrName[row][col]}>
 关联数组:<{$arrName.key1.key2}>
对象变量:<{$obj->att}>
 <{$obj->fun()}>
2.给模板分配变量(通过php给模板中的变量赋值)
通过assign方法

五、实例
test.php

<?php
$address = array('北京','天津','河北');
$birthday = array("year"=>'1990',"month"=>'12',"day"=>array('1',"星期一"));
class Stu{
 var $name;
 var $sex;
 var $age;
function study(){
 echo "好好学习,天天向上!";
 }
 }
$stu1 = new Stu;
$stu1->name="张三";
$stu1->age=19;
$stu1->sex='女';

include("libs/Smarty.class.php");
$smarty = new Smarty();
$smarty->template_dir = "demo/templates";
$smarty->compile_dir = "demo/templates_c";
$smarty->left_delimiter = "<{";
$smarty->right_delimiter = "}>";
$smarty->assign("name","李四");
$smarty->assign("arr",$address);
$smarty->assign("birthday",$birthday);
$smarty->assign("student",$stu1);
$smarty->display("test.tpl");
?>

test.tpl  模板文件
我是<{$name}>!<br>
归属地:
<select>
<option><{$arr[0]}></option>
<option><{$arr[1]}></option>
<option><{$arr[2]}></option>
</select><br>
出生年月:
<{$birthday.year}>年<{$birthday.month}>月<{$birthday.day[0]}>日&nbsp;&nbsp;<{$birthday.day[1]}>
<br>
我是<{$student->name}>,<{$student->sex}>,
年龄<{$student->age}><br>
我的宣言是<{$student->study()}>


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值