Smarty是一个PHP的模板引擎。更明确来说,它可以帮助开发者更好地 分离程序逻辑和页面显示。最好的例子,是当程序员和模板设计师是不同的两个角色的情况,而且 大部分时候都不是同一个人的情况。业务逻辑和显示逻辑分离,是Smarty的一个设计理念。
中文手册:https://www.smarty.net/docs/zh_CN/
下载: https://www.smarty.net/download
【1】下载引入Smarty3
进入下载页面,选择版本Smarty3使用。
【2】引入smarty3 设置变量 传入变量 渲染模板
<?php
//引入主类
require('../Smarty/libs/Smarty.class.php');
//实例化smarty对象
$smarty = new Smarty();
// 配置
$smarty->template_dir = './template/';//模板文件目录
$smarty->compile_dir = './compile/'; //生成编译文件目录
//变量 赋值 字符串 数字 数组
//传入变量
$smarty->assign('title','引入smarty');
$smarty->assign('content','学习');
//传入数字
$smarty->assign('num','999');
//传入数组 关联数组
$user1 = array('name'=>'刘备','age'=>'20','weapon'=>'双?');
$smarty->assign('user1',$user1);
//传入数组 索引数组
$user2 = array(0=>'关羽',1=>'18',2=>'青龙偃月刀');
$smarty->assign('user2',$user2);
//渲染
$smarty->display('1.html');
html模板页面
<!DOCTYPE html>
<html lang="en">
<head>
<title>{$title}</title>
<meta charset="utf-8">
</head>
<body>
{$content} 是 {$num}
<pre>
---------------------------------关联数组 利用$user['name']访问
姓名:{$user1['name']}
年龄:{$user1['age']}
武器:{$user1['weapon']}
---------------------------------关联数组 利用$user.name 访问
姓名:{$user1.name}
年龄:{$user1.age}
武器:{$user1.weapon}
---------------------------------索引数组 利用$user[0]访问
姓名:{$user2[0]}
年龄:{$user2[1]}
武器:{$user2[2]}
---------------------------------索引数组 利用$user.0访问
姓名:{$user2.0}
年龄:{$user2.1}
武器:{$user2.2}
</pre>
</body>
</html>
【3】定界符的设定
$smarty->left_delimiter = '<{';
$smarty->right_delimiter = '}>';
【4】原样输出{literal}{/literal}标签
这样的话,包含在里面的{$var}就会原样输出,而不会进行解析成<?php ehco $var; ?>
{literal}
利用{$var}输出变量
{/literal}
小结一下
【1】Smarty3的赋值类型
Smarty3可以赋 字符串,数值,数组,甚至对象。其中关联数组或者索引数组的模板输出,可以是以$arr.name的形式或者是$arr[''name].
【2】定界符
模板解析的时候使用中括号进行变量输出{}里面写变量,即{$var}相当于<?php echo $var; ?>
这个定界符{ }是默认的,当然可以利用$smarty->left_delimiter="<{" 和$smarty->right_delimiter="}>"进行修改。
【3】 原样输出
在模板页面里可能会有一些css样式的大括号,或者一些需要显示在页面中的,不想被解析,那么就在两边加上{literal}{/literal}标签