|
[PHP]代码
view source
print?
001 <?php
002 /******************8PHP静态类*************/
003 class Shtml
004 {
005 var $Templet;
006 var $DataSource;
007 var $Dir;
008
009 var $fileName;
010 var $mod;
011 var $handle;
012
013 function Shtml($fileName = "")
014 {
015 $this->fileName = $fileName;
016 $this->mod = "wb";
017 $this->handle = false;
018
019 $this->Templet = "";
020 $this->DataSource = array();
021 $this->Dir = "";
022 }
023
024 // 绑定数据源,参数为一数组
025 function BindData($arr)
026 {
027 $this->DataSource = $arr;
028 }
029
030 // 设置文件存放路径
031 function SetDir($dir)
032 {
033 $this->Dir = $dir;
034 }
035 function SetFileName($fileName)
036 {
037 return $this->fileName = $fileName;
038 }
039
040 function GetMod()
041 {
042 return $this->mod;
043 }
044 function SetMod($mod)
045 {
046 return $this->mod = $mod;
047 }
048 function Open()
049 {
050 if (substr($this->fileName, 0, 1) == "/")
051 $this->fileName = $_SERVER['DOCUMENT_ROOT'] . $this->fileName;
052 if ($this->handle = fopen($this->fileName, $this->mod))
053 return $this->handle;
054 else
055 return false;
056 }
057 function Close()
058 {
059 return fclose($this->handle);
060 }
061 function Write($content)
062 {
063 return fwrite($this->handle, $content);
064 }
065 function MkDir($pathname)
066 {
067 $currentPath = "";
068 str_replace("\\", "/", $pathname);
069 $pathArr = split("/", $pathname);
070 if ($pathArr[0] == "") { //使用绝对路径
071 $currentPath = $_SERVER['DOCUMENT_ROOT'];
072 } else {
073 $currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']);
074 }
075 for ($i = 0; $i < count($pathArr); $i++) {
076 if ($pathArr[$i] == "")
077 continue;
078 else
079 if (is_dir($currentPath . " / " . $pathArr[$i]))
080 $currentPath = $currentPath . " / " . $pathArr[$i];
081 else
082 mkdir($currentPath = $currentPath . " / " . $pathArr[$i]);
083 }
084 }
085
086 // 生成静态文件
087 function Create()
088 {
089 $tmp = $this->Templet;
090 foreach ($this->DataSource as $key => $value) {
091 $tmp = str_replace(" < FIELD_" . $key . " > ", $value, $tmp);
092 }
093 $this->MkDir(dirname($this->fileName));
094 $this->Open();
095 $this->Write($tmp);
096 $this->Close();
097 }
098 }
099
100 function CreateShtml() {
101 ob_start("callback_CteateShtml");
102 }
103
104 function callback_CteateShtml($buffer) {
105 $page = intval(@$_REQUEST["page"]);
106 $shtml = new Shtml();
107 $shtml->SetFileName($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'], ".php") . ($page == 0 ? "" : "_" . strval($page)) . ".html");
108 $shtml->Templet = $buffer;
109 $shtml->Create();
110 return $buffer;
111 }
112 ?> |
|