[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
?>