<?php
    require_once 'Savant3.php';
    $tpl = new Savant3();
    $name = "轻量级PHP模板引擎Savant";
    $booklist = array(
    array(
    'author' => 'biuuu',
    'title' => '必优博客'
    ),
    array(
    'author' => 'Savant',
    'title' => '轻量级PHP模板引擎'
    )
    );
    $tpl->title = $name;
    $tpl->books = $booklist;
    $tpl->display('books.tpl.php');
    ?>
代码详解
一,包含Savant模板文件,与包含其它模板文件一样,如:
require_once 'Savant3.php';
二,声明一个Savant模板对象,如:
$tpl = new Savant3();
三,定义一个简单变量,如:
$name = "轻量级PHP模板引擎Savant";
四,定义一个二维数组,如:
$booklist = array(
array(
'author' => 'biuuu',
'title' => '必优博客'
),
array(
'author' => 'Savant',
'title' => '轻量级PHP模板引擎'
)
);
五,给模板赋值
$tpl->title = $name;
$tpl->books = $booklist;
六,输出模板
$tpl->display('biuuu.tpl.php');
biuuu.tpl.php模板中使用以上定义的变量和数组
输出变量$tpl->title
<title><?php echo $this->eprint($this->title); ?></title>
输出二维数组$tpl->books = $booklist;
<?php foreach ($this->books as $key => $val): ?>
<tr>
<td><?php echo $this->eprint($val['author']); ?></td>
<td><?php echo $this->eprint($val['title']); ?></td>
</tr>
<?php endforeach; ?>
使用非常简单,与我们平时的PHP输出基本上一样,使用eprint()过滤输出,eprint()函数如下:
    public function eprint($value){
    $num = func_num_args();
    if ($num == 1) {
    echo $this->escape($value);
    } else {
    $args = func_get_args();
    echo call_user_func_array(
    array($this, 'escape'),
    $args
    );
    }
    }
从上eprint()方法可知,eprint()调用了escape()输出,实质是一个htmlspecialchars等的过滤,这与我们很多模板输出是一样的,具体代码大家可以看一下Savant3.php文件。
这里简单的介绍一下这个轻量级的PHP模板引擎,Savant有一个面向对象的模板插件系统和输出过滤器,Savant3.php中已两个包含了这两个工具,如下:
include_once dirname(__FILE__) . '/Savant3/Filter.php';
include_once dirname(__FILE__) . '/Savant3/Plugin.php';
这家伙很懒,还没有设置简介