下一篇 »« 上一篇提示:鼠标放在图片上用鼠标中键即可控制图片大小

文章标题:PHP静态类2

作者:    时间:2008-04-07    翻译网站:    点击:36270    本文共1篇文章
发表评论 | 查看评论 | 加入收藏 | Email给朋友 | 打印本文 | 字体:[ ]

PHP代码
  1. <?php   
  2. class Shtml    
  3.   {    
  4.     var $Templet;    
  5.     var $DataSource;    
  6.     var $Dir;    
  7.     
  8.     var $fileName;    
  9.     var $mod;    
  10.     var $handle;    
  11.     
  12.     function Shtml($fileName="")    
  13.     {    
  14.       $this->fileName=$fileName;    
  15.       $this->mod="wb";    
  16.       $this->handle=false;    
  17.     
  18.       $this->Templet    = "";    
  19.       $this->DataSource  = array();    
  20.       $this->Dir      = "";    
  21.     }    
  22.         
  23.     ///  <描述>    
  24.     ///  绑定数据源,参数为一数组。    
  25.     ///  </描述>    
  26.     function BindData($arr)    
  27.     {    
  28.       $this->DataSource = $arr;    
  29.     }    
  30.         
  31.     ///  <描述>    
  32.     ///  设置文件存放路径。    
  33.     ///  </描述>    
  34.     function SetDir($dir)    
  35.     {    
  36.       $this->Dir = $dir;    
  37.     }    
  38.     function SetFileName($fileName)    
  39.     {    
  40.       return $this->fileName=$fileName;    
  41.     }    
  42.     
  43.     function GetMod()    
  44.     {    
  45.       return $this->mod;    
  46.     }    
  47.     function SetMod($mod)    
  48.     {    
  49.       return $this->mod=$mod;    
  50.     }    
  51.     function Open()    
  52.     {    
  53.       if(substr($this->fileName,0,1)=="/")    
  54.         $this->fileName = $_SERVER['DOCUMENT_ROOT'] . $this->fileName;    
  55.       if($this->handle=fopen($this->fileName, $this->mod))    
  56.         return $this->handle;    
  57.       else    
  58.         return false;    
  59.     }    
  60.     function Close()    
  61.     {    
  62.       return fclose($this->handle);    
  63.     }    
  64.     function Write($content)    
  65.     {    
  66.       return fwrite($this->handle,$content);    
  67.     }    
  68.     function MkDir($pathname)    
  69.     {    
  70.       $currentPath="";    
  71.       str_replace("\","/",$pathname);   
  72.       $pathArr = split("/",$pathname);   
  73.       if($pathArr[0] == "")    //使用绝对路径   
  74.       {   
  75.         $currentPath = $_SERVER['DOCUMENT_ROOT'];   
  76.       }   
  77.       else   
  78.       {   
  79.         $currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']);   
  80.       }   
  81.       for($i=0; $i<count($pathArr); $i++)   
  82.       {   
  83.         if($pathArr[$i]=="")   
  84.           continue;   
  85.         else   
  86.           if(is_dir($currentPath . "/" . $pathArr[$i]))   
  87.             $currentPath = $currentPath . "/" . $pathArr[$i];   
  88.           else   
  89.             mkdir($currentPath = $currentPath . "/" . $pathArr[$i]);   
  90.       }   
  91.     }   
  92.    
  93.     ///  <描述>   
  94.     ///  生成静态文件。   
  95.     ///  </描述>   
  96.     function Create()   
  97.     {   
  98.       $tmp = $this->Templet;   
  99.       foreach($this->DataSource as $key=>$value)   
  100.       {   
  101.         $tmp = str_replace("<FIELD_" . $key . ">", $value, $tmp);   
  102.       }   
  103.       $this->MkDir(dirname($this->fileName));   
  104.       $this->Open();   
  105.       $this->Write($tmp);   
  106.       $this->Close();   
  107.     }   
  108.   }   
  109.    
  110.   function CreateShtml()   
  111.   {   
  112.     ob_start("callback_CteateShtml");   
  113.   }   
  114.   function callback_CteateShtml($buffer)   
  115.   {   
  116.     $page = intval(@$_REQUEST["page"]);   
  117.     $shtml = new Shtml();   
  118.     $shtml->SetFileName($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'],".php") . ($page==0 ? "" : "_" . strval($page)) . ".htm");    
  119.     $shtml->Templet = $buffer;    
  120.     $shtml->Create();    
  121.     return $buffer;    
  122.   }   
  123. ?>   
责任编辑:semirock
发表评论
密码: (游客不需要密码)
记住我【Alt+S 或 Ctrl+Enter 快速提交】