简单模板类
MyMiniSmarty.class.php
View Code
1 <?php 2 /** 3 * 模板类 4 * 1、读取模板文件 5 * 2、把模板文件替换成可以运行的php文件 6 * 3、包含缓存机制--文件 7 */ 8 9 class MyMiniSmarty { 10 //var 为了兼容低版本 11 var $template_dir = './templates/'; //模板文件 12 var $compile_dir = './templates_c/'; //编译后文件 13 var $tpl_vars = array(); //存放模板值的数组 14 15 //给模板值 16 function assign($tpl_var, $var = null) { 17 if ('' != $tpl_var) { 18 $this->tpl_vars[$tpl_var] = $var; 19 } 20 } 21 //替换占位符编译成可运行文件 22 function display($tpl_file) { 23 $tpl_file_path = $this->template_dir . $tpl_file; 24 $complie_file_path = $this->compile_dir . 'com_' . $tpl_file . '.php'; 25 if (!file_exists($tpl_file_path)) { 26 return false; 27 } 28 //判断是否有缓存文件,以前编译过,检查模板文件和编译文件修改时间 29 if (!file_exists($complie_file_path) || filemtime($tpl_file_path) > filemtime($complie_file_path)) { 30 $fpl_file_con = file_get_contents($tpl_file_path); 31 32 //核心是正则替换 33 34 $pattern = array( 35 '/\{\s*\$([a-zA-Z_]\w*)\s*\}/i' 36 ); 37 $replace = array( 38 '<?php echo $this->tpl_vars["${1}"] ?>' 39 ); 40 41 $new_str = preg_replace($pattern, $replace, $fpl_file_con); 42 43 file_put_contents($complie_file_path, $new_str); 44 } 45 46 47 48 49 //引用编译后的文件 50 include($complie_file_path); 51 } 52 53 } 54 ?>
intro.php
View Code
<?php require 'MyMiniSmarty.class.php'; $mysmarty = new MyMiniSmarty; $mysmarty->assign('title', '模板标题'); $mysmarty->assign('content', '模板内容'); $mysmarty->display('intro.tpl'); ?>
intro.tpl
View Code
<html> <head> <meta content="text/html" charset="utf-8"/> <title>{$title}</title> </head> <body> {$content} </body> </html>
模板机制在于,简单标签代替php代码,使逻辑代码和页面设计分离,同时加入文件缓存等机制
本文来自博客园,作者:Caps,转载请注明原文链接:https://www.cnblogs.com/caps/archive/2013/02/26/2934217.html