这里给出一个简易的自定义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
请登录后发表评论
注册
社交帐号登录