日度归档:2009年6月4日

最简单的模板技术

php的模板,例如smarty等,都是采用模板内置的标记语言进行模板变量等操作。其目的是为了让开发模板的美工不需要太大的学习成本,可是采用这种方式有几个不足2点:

1,现在做页面的美工基本上都是直接把页面给程序处理成模板,这样的话,程序员就要承担模板这部分的学习成本

2,smarty中的模板最终也是编译成一个php html混排的文件,如此的话,模板将在编译上花费一部分的系统资源,其实php本身就是一个非常好的模板语言,何必在模板程序里用正则转换模板的标记语言呢!

从功能上来说,采用纯php来做模板语言的话,也非常容易实现页面模板与程序的分离,同时页面模板里的处理能力也大大的加强

下面是临时写的一个简易的模板类,没有其它功能,纯粹用于页面与程序的分离!

首页index.php文件

PHP代码
  1. <?php   
  2. header("content-type:text/html; charset=utf-8");   
  3. define(‘TPLDIR’,dirname(__FILE__).‘/tpl/’);   
  4. $template=new template;   
  5. $template->a=‘这里是模板输出变量测试!’;   
  6. $template->tpl(‘a.html’);   
  7.   
  8.   
  9. //模板类   
  10. class template   
  11. {   
  12.     function tpl($tplname)   
  13.     {   
  14.         $tpl=TPLDIR.$tplname;   
  15.         if(file_exists($tpl)){   
  16.             include($tpl);   
  17.         }else{   
  18.             echo ‘模板’.$tplname.‘不存在’;   
  19.         }   
  20.         unset($tpl);   
  21.     }   
  22. }   
  23. ?>  

 

模板文件 tpl/a.html

 

XML/HTML代码
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">  
  2. <HTML>  
  3.  <HEAD>  
  4.   <TITLE> 最简单的php模板 </TITLE>  
  5.   <META NAME="Generator" CONTENT="EditPlus">  
  6.   <META NAME="Author" CONTENT="">  
  7.   <META NAME="Keywords" CONTENT="">  
  8.   <META NAME="Description" CONTENT="">  
  9.  </HEAD>  
  10.   
  11.  <BODY>  
  12.  从模板里输入变量a: <?php echo $this->?>  
  13.  <br>  
  14.   从1加到10000等于:   
  15.   <?php  
  16.   $s=0;   
  17.     for($i=1;$i<=10000;$i++){   
  18.         $s+=$i;   
  19.     }   
  20.     echo $s;   
  21.     ?>  
  22.  </BODY>  
  23. </HTML>  
  24.