define_class.php
上传用户:yttaitong
上传日期:2009-05-10
资源大小:128k
文件大小:3k
源码类别:

WEB源码(ASP,PHP,...)

开发平台:

PHP

  1. <?php
  2. /*
  3.     [BBWPS!] (C)2006-2010 小蜜蜂版权所有.
  4. This is NOT a freeware, use is subject to license terms
  5.     时间:2007年12月
  6.     描述:自己定义标签,进行解析
  7. */
  8. //下边是调用方式
  9. //$rs是固定变量,只能修改下标(数据库的字段名)
  10. //模板中的标签格式:definesql_SQL文件名(不包含后缀) 例如:definesql_cat1
  11. /*$absultePath="http://localhost";
  12. $template_name="default";
  13. $parseTemplateName="index.html";
  14. $array=array(
  15.   "addtime"=>'date("y-m-d",$rs["addtime"]);', //转换时间展示格式
  16.   "picture"=>'$absultePath.$rs["picture"];',  //修改图片的路径
  17.   "finsh"=>'$rs["finish"]?$rs["finish"]="已完成":$rs["finish"]="连载中";'//状态转换
  18. );
  19. $defineObj=new DefineClass("./template/$template_name/$parseTemplateName","./defsql/");
  20. $defineObj->ParseTemplate($array);*/
  21. class DefineClass{
  22. var $file="";     //解析的模板文件
  23. var $tags=array();//标签数组
  24. var $cacheDir=""; //SQL缓存目录
  25. var $string="";   //模板内容
  26. var $tagReg="definesql_(.+?)";//标签正则表达式
  27. //PHP5的构造函数
  28. //参数:$file 解析模板文件
  29. //参数:$cacheDir SQL缓存目录
  30. //返回:模板对象
  31. function __construct($file,$cacheDir){
  32. return $this->DefineClass($file,$cacheDir);
  33. }
  34. //PHP4的构造函数
  35. //参数:$file 解析模板文件
  36. //参数:$cacheDir SQL缓存目录
  37. //返回:模板对象
  38. function DefineClass($file,$cacheDir){
  39. if(!$file||!$cacheDir){
  40. $this->error("Template File Or CacheDir Is Not Exist!");
  41. }
  42. $this->file=$file;
  43. $this->cacheDir=$cacheDir;
  44. $string=file_get_contents($file);
  45. if(!$string) $this->error("Template File Is NULL");
  46. $this->string=$string;
  47. $this->ParseTag();
  48. }
  49. //解析自定义标签
  50. //参数:NULL
  51. //返回:BOOL
  52. function ParseTag(){
  53. preg_match_all("/<!--s+BEGIN ($this->tagReg)s-->/is",$this->string,$tags);
  54. if (is_array($tags)){
  55. $this->tags=$tags;
  56. return true;
  57. }
  58. else{
  59. return false;
  60. }
  61. }
  62. //解析模板
  63. //参数:NULL
  64. //返回:模板对象
  65. //定义$array的样例
  66. function ParseTemplate($array=null){
  67. global $p,$prefix;
  68. foreach ($this->tags[0] as $key => $tag){
  69. if(file_exists($this->cacheDir.$this->tags[2][$key].".php")){
  70. include($this->cacheDir.$this->tags[2][$key].".php");
  71. $p->set_block("handle",$this->tags[1][$key],$this->tags[1][$key]."t");
  72. $rsArray=getSQLResultArray($sql);
  73. if(count($rsArray)>0){
  74. foreach ($rsArray as $rs){
  75. //----------------------------------------------
  76. //这里做一些特殊的定义,比如时间格式转换,图片地址转换
  77. //----------------------------------------------
  78. if(is_array($array)){
  79. foreach($array as $keyField=>$value){
  80. eval("$value=$value;");
  81. $rs[$keyField]=$value;
  82. }
  83. }
  84. $p->set_var($rs);
  85. $p->parse($this->tags[1][$key]."t",$this->tags[1][$key],true);
  86. }
  87. foreach ($rsArray as $rs){
  88. foreach ($rs as $var){
  89. $p->set_var($var,null);
  90. }
  91. }
  92. }
  93. }
  94. else{
  95. $this->error($this->cacheDir.$this->tags[2][$key].".php this file is not exist!");
  96. }
  97. }
  98. return $p;
  99. }
  100. //错误报告
  101. function error($msg){
  102. exit($msg);
  103. }
  104. }
  105. ?>