sgiphp / ste

模板引擎

1.1.0 2016-05-26 08:36 UTC

This package is not auto-updated.

Last update: 2024-09-14 14:09:10 UTC


README

Build Status

STE代表Sugi(或简单)模板引擎。它旨在安全、轻量且快速。

与一些著名的模板引擎(如Smarty、Twig等)不同,模板代码不会被转换为PHP代码然后执行,而是实时解析。变量和块被正则表达式(preg_replace函数)替换。这种方法有多个优点(和缺点)。STE代码轻量(目前仅有一个文件),速度快(与PHP转换相比),最重要的是它安全——你可以让任何人为你的项目制作HTML模板,使用它也是安全的,因为模板文件中不能注入PHP代码。而使用这种方法的一个缺点是——所有的逻辑都应该在PHP代码中完成,然后传递给模板引擎。STE甚至不识别最简单的if-then-else语句。

使用方法

模板文件:index.html

<!DOCTYPE html>
<html>
<head>
	<title>{title}</title>
</head>
<body>
	<ul id="navigation">
		<!-- BEGIN navi -->
		<li><a href="{navi.link}">{navi.title}</a></li>
		<!-- END navi -->
	</ul>
</body>
</html>

PHP文件

<?php

use SugiPHP\STE\Ste;

$tpl = new Ste();
// Load a file
$tpl->load(__DIR__"/index.html");
// or set a raw template from PHP $tpl->setTemplate($htmlTemplate);
// set a variable title
$tpl->assign("title", "My Site");
// sets several links at once - perfect for database results
$tpl->assign("navi", array(
	array("link" => "/blog", "title" => "My Blog"),
	array("link" => "http://gamegix.com", "title" => "Online games")
));
// parse the template
echo $tpl->parse();
?>

输出将类似于以下内容

<!DOCTYPE html>
<html>
<head>
	<title>My Site</title>
</head>
<body>
	<ul id="navigation">
		<li><a href="/blog">My Blog</a></li>
		<li><a href="http://gamegix.com">Online games</a></li>
	</ul>
</body>
</html>