sgiphp / ste
1.1.0
2016-05-26 08:36 UTC
Requires
- php: >=5.5
This package is not auto-updated.
Last update: 2024-09-14 14:09:10 UTC
README
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>