这里给出一个简易的自定义min版smarty模板引擎MinSmarty.class.php的实现代码示例:
<?php
class MinSmarty{
private $template_dir = './templates/';
private $compile_dir = './templates_c/';
public function __construct(){
if(!is_dir($this->compile_dir)) {
mkdir($this->compile_dir);
}
}
public function assign($key, $value){
$this->$key = $value;
}
public function display($template){
ob_start();
$template_path = $this->template_dir.$template.'.tpl';
if(!file_exists($template_path)){
die("Template {$template} does not exist.");
}
$template_compile = $this->compile_dir.basename($template_path).'.php';
if(!file_exists($template_compile) || (filemtime($template_path) > filemtime($template_compile))){
$this->compileTemplate($template_path, $template_compile);
}
extract($this); // Import variables into local symbol table
require $template_compile; // Render the view
$content = ob_get_clean();
echo $content;
}
private function compileTemplate($template_path, $template_compile){
$template = file_get_contents($template_path);
$openTag = preg_quote('{');
$closeTag = preg_quote('}');
$template = preg_replace("/{$openTag}(.+?){$closeTag}/e", "\$this->displayTemplate('\\1')", $template);
$template = "<?php extract(\$this); ?>".$template;
file_put_contents($template_compile, $template);
}
private function displayTemplate($templateName){
ob_start();
require $this->template_dir.$templateName.'.tpl';
$content = ob_get_clean();
return $content;
}
}
使用示例:
$smarty = new MinSmarty();
$smarty->assign('name', 'John');
$smarty->display('index');
© 版权声明
本文刊载的所有内容,包括文字、图片、音频、视频、软件、程序、以及网页版式设计等部门来源于互联网,版权均归原作者所有!本网站提供的内容服务于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
联系信息:邮箱aoxolcom@163.com或见网站底部。
联系信息:邮箱aoxolcom@163.com或见网站底部。
THE END















请登录后发表评论
注册
社交帐号登录