PHP :: Savant
Savant 是使用 PHP 语言编写的轻量级面向对象模板系统,目前已经发布了 2.3.3 版本。
与 Smarty 模板系统不同,Savant 默认并不对模板进行编译,而是使用 PHP 作为其模板语言,所以你不必去学习新的模板标签即可使用 Savant。
Savant 拥有面向对象系统的模板插件 (template plugins) 与输出过滤 (output filters),你可以很快捷方便地往其中添加行为动作。
Savant 还有一套可扩展的错误处理系统。由于使用最小化的外挂错误类,他支持 PEAR_Error、 PEAR_ErrorStack 以及 PHP5 异常。你还可以加入自己的错误处理类来支持喜欢的错误框架系统。Savant 在其标准类中提供了错误处理程序的挂接点。
另外,你还可以自定义模板标签解析器,并将其挂接到 Savant 中。这意味着你可以根据自己的喜好去创建标签,只要你的解析器可以将其转换成 PHP 脚本,Savant 也就可以使用此标签。和错误处理一样,Savant 也提供了模板标签解析器的挂接点,可以很方便地挂接自己编写的解析器。
以简单的书本为例,Model Logic 代码 (books.php) 为:
<?php // 包含 Savant2 类文件,同时创建对象实例。 require_once 'Savant2.php'; $tpl =& new Savant2(); // 创建标题。 $name = "Some Of My Favorite Books"; // 生成书本作者及书名的数组。 $booklist = array( array( 'author' => 'Hernando de Soto', 'title' => 'The Mystery of Capitalism' ), array( 'author' => 'Neal Stephenson', 'title' => 'Cryptonomicon' ), array( 'author' => 'Milton Friedman', 'title' => 'Free to Choose' ) ); // 模板变量赋值。 $tpl->assign('title', $name); $tpl->assign('books', $booklist); // 显示模板。 $tpl->display('books.tpl.php'); ?>
View Logic 代码 (books.tpl.php) 为:
<html>
<head>
<title><?php echo $this->title ?></title>
</head>
<body>
<?php if (is_array($this->books)): ?>
<!-- A table of some books. -->
<table>
<tr>
<th>Author</th>
<th>Title</th>
</tr>
<?php foreach ($this->books as $key => $val): ?>
<tr>
<td><?php echo $val['author'] ?></td>
<td><?php echo $val['title'] ?></td>
</tr>
<?php endforeach; ?>
</table>
<?php else: ?>
<p>There are no books to display.</p>
<?php endif; ?>
</body>
</html>
可以看到,在模板文件中并不使用类似 [i]{tag}[/i] 的标签,而是直接用 PHP 输出模板变量,只是使用了 [i]$this[/i],这种方式对于推广应用是很有帮助的,因为你不必像学习 Smarty 的语法那样去学习模板标签的用法,编写模板文件就和编写 PHP 文件一样见到方便。
更多教程示例可以参见Getting Started

相应的,美工得懂PHP
Comment by Cevin — February 24, 2009 @ 4:25 am