PHP静态类
[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 |
?> |
PHP之友评论