一、什么是Smarty?
1.概念:是使用PHP写出来的模板引擎,实现了后台逻辑(*.php)和外在内容(前台页面)分离,将php程序员和美工设计人员进行分离。应用Smarty的网站程序逻辑的改变不会影响美工页面的设计,美工设计从新修改之后不会影响到程序逻辑。
2.优点:
在比较大的项目中才得以体现:当后数据没有变化的时候,只需一次编译,只有当后台数据发生变时,页面才需要重新编译。(运行速度快,缓存技术(catch),函数(插件)丰富)
3.不适合使用Smarty的地方:
(1)小项目(美工和后台程序一个人就能实现)
(2)数据需要实时更新时(股市行情)
二、Smarty的安装
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方法
五.smarty实例
<?php
$address=array("北京","天津","河北");
$shijian=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='女';
class People{
private $age;
public $sex;
function __construct($age)
{
$this->age=$age;
}
function __tostring()
{
return $this->age;
}
function hanshu()
{
$this->showage();
}
private function showage()
{
echo "我们都是大龄";
}
public function showtime()
{
echo "好好学习,天天向上";
}
}//对象传递到模板时受访问权限控制的限制n
$p1=new People('30');
$p1->sex='女';
$p1->showtime();
$p1->hanshu();
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("tell","72185977");//给变量赋值
$smarty->assign("arr",$address);
$smarty->assign("student",$stu1);
$smarty->assign("brithday",$shijian);
$smarty->assign("people",$p1);
$smarty->display("test.tpl");//将模板及数据显示。