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