define_class.php
资源名称:BBWPS.rar [点击查看]
上传用户:yttaitong
上传日期:2009-05-10
资源大小:128k
文件大小:3k
源码类别:
WEB源码(ASP,PHP,...)
开发平台:
PHP
- <?php
- /*
- [BBWPS!] (C)2006-2010 小蜜蜂版权所有.
- This is NOT a freeware, use is subject to license terms
- 时间:2007年12月
- 描述:自己定义标签,进行解析
- */
- //下边是调用方式
- //$rs是固定变量,只能修改下标(数据库的字段名)
- //模板中的标签格式:definesql_SQL文件名(不包含后缀) 例如:definesql_cat1
- /*$absultePath="http://localhost";
- $template_name="default";
- $parseTemplateName="index.html";
- $array=array(
- "addtime"=>'date("y-m-d",$rs["addtime"]);', //转换时间展示格式
- "picture"=>'$absultePath.$rs["picture"];', //修改图片的路径
- "finsh"=>'$rs["finish"]?$rs["finish"]="已完成":$rs["finish"]="连载中";'//状态转换
- );
- $defineObj=new DefineClass("./template/$template_name/$parseTemplateName","./defsql/");
- $defineObj->ParseTemplate($array);*/
- class DefineClass{
- var $file=""; //解析的模板文件
- var $tags=array();//标签数组
- var $cacheDir=""; //SQL缓存目录
- var $string=""; //模板内容
- var $tagReg="definesql_(.+?)";//标签正则表达式
- //PHP5的构造函数
- //参数:$file 解析模板文件
- //参数:$cacheDir SQL缓存目录
- //返回:模板对象
- function __construct($file,$cacheDir){
- return $this->DefineClass($file,$cacheDir);
- }
- //PHP4的构造函数
- //参数:$file 解析模板文件
- //参数:$cacheDir SQL缓存目录
- //返回:模板对象
- function DefineClass($file,$cacheDir){
- if(!$file||!$cacheDir){
- $this->error("Template File Or CacheDir Is Not Exist!");
- }
- $this->file=$file;
- $this->cacheDir=$cacheDir;
- $string=file_get_contents($file);
- if(!$string) $this->error("Template File Is NULL");
- $this->string=$string;
- $this->ParseTag();
- }
- //解析自定义标签
- //参数:NULL
- //返回:BOOL
- function ParseTag(){
- preg_match_all("/<!--s+BEGIN ($this->tagReg)s-->/is",$this->string,$tags);
- if (is_array($tags)){
- $this->tags=$tags;
- return true;
- }
- else{
- return false;
- }
- }
- //解析模板
- //参数:NULL
- //返回:模板对象
- //定义$array的样例
- function ParseTemplate($array=null){
- global $p,$prefix;
- foreach ($this->tags[0] as $key => $tag){
- if(file_exists($this->cacheDir.$this->tags[2][$key].".php")){
- include($this->cacheDir.$this->tags[2][$key].".php");
- $p->set_block("handle",$this->tags[1][$key],$this->tags[1][$key]."t");
- $rsArray=getSQLResultArray($sql);
- if(count($rsArray)>0){
- foreach ($rsArray as $rs){
- //----------------------------------------------
- //这里做一些特殊的定义,比如时间格式转换,图片地址转换
- //----------------------------------------------
- if(is_array($array)){
- foreach($array as $keyField=>$value){
- eval("$value=$value;");
- $rs[$keyField]=$value;
- }
- }
- $p->set_var($rs);
- $p->parse($this->tags[1][$key]."t",$this->tags[1][$key],true);
- }
- foreach ($rsArray as $rs){
- foreach ($rs as $var){
- $p->set_var($var,null);
- }
- }
- }
- }
- else{
- $this->error($this->cacheDir.$this->tags[2][$key].".php this file is not exist!");
- }
- }
- return $p;
- }
- //错误报告
- function error($msg){
- exit($msg);
- }
- }
- ?>