PHP静态类
[PHP]代码
view source
print?
| 002 | /******************8PHP静态类*************/ |
| 013 | function Shtml($fileName = "") |
| 015 | $this->fileName = $fileName; |
| 017 | $this->handle = false; |
| 020 | $this->DataSource = array(); |
| 025 | function BindData($arr) |
| 027 | $this->DataSource = $arr; |
| 035 | function SetFileName($fileName) |
| 037 | return $this->fileName = $fileName; |
| 046 | return $this->mod = $mod; |
| 050 | if (substr($this->fileName, 0, 1) == "/") |
| 051 | $this->fileName = $_SERVER['DOCUMENT_ROOT'] . $this->fileName; |
| 052 | if ($this->handle = fopen($this->fileName, $this->mod)) |
| 059 | return fclose($this->handle); |
| 061 | function Write($content) |
| 063 | return fwrite($this->handle, $content); |
| 065 | function MkDir($pathname) |
| 068 | str_replace("", "/", $pathname); |
| 069 | $pathArr = split("/", $pathname); |
| 070 | if ($pathArr[0] == "") { //使用绝对路径 |
| 071 | $currentPath = $_SERVER['DOCUMENT_ROOT']; |
| 073 | $currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']); |
| 075 | for ($i = 0; $i < count($pathArr); $i++) { |
| 076 | if ($pathArr[$i] == "") |
| 079 | if (is_dir($currentPath . " / " . $pathArr[$i])) |
| 080 | $currentPath = $currentPath . " / " . $pathArr[$i]; |
| 082 | mkdir($currentPath = $currentPath . " / " . $pathArr[$i]); |
| 089 | $tmp = $this->Templet; |
| 090 | foreach ($this->DataSource as $key => $value) { |
| 091 | $tmp = str_replace(" < FIELD_" . $key . " > ", $value, $tmp); |
| 093 | $this->MkDir(dirname($this->fileName)); |
| 100 | function CreateShtml() { |
| 101 | ob_start("callback_CteateShtml"); |
| 104 | function callback_CteateShtml($buffer) { |
| 105 | $page = intval(@$_REQUEST["page"]); |
| 107 | $shtml->SetFileName($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'], ".php") . ($page == 0 ? "" : "_" . strval($page)) . ".html"); |
| 108 | $shtml->Templet = $buffer; |
<?php /******************8PHP静态类*************/class Shtml { var $Templet; var $DataSource; var $Dir; var $fileName; var $mod; var $handle; function Shtml($fileName = "") { $this->fileName = $fileName; $this->mod = "wb"; $this->handle = false; $this->Templet = ""; $this->DataSource = array(); $this->Dir = ""; } // 绑定数据源,参数为一数组 function BindData($arr) { $this->DataSource = $arr; } // 设置文件存放路径 function SetDir($dir) { $this->Dir = $dir; } function SetFileName($fileName) { return $this->fileName = $fileName; } function GetMod() { return $this->mod; } function SetMod($mod) { return $this->mod = $mod; } function Open() { if (substr($this->fileName, 0, 1) == "/") $this->fileName = $_SERVER['DOCUMENT_ROOT'] . $this->fileName; if ($this->handle = fopen($this->fileName, $this->mod)) return $this->handle; else return false; } function Close() { return fclose($this->handle); } function Write($content) { return fwrite($this->handle, $content); } function MkDir($pathname) { $currentPath = ""; str_replace("", "/", $pathname); $pathArr = split("/", $pathname); if ($pathArr[0] == "") { //使用绝对路径 $currentPath = $_SERVER['DOCUMENT_ROOT']; } else { $currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']); } for ($i = 0; $i < count($pathArr); $i++) { if ($pathArr[$i] == "") continue; else if (is_dir($currentPath . " / " . $pathArr[$i])) $currentPath = $currentPath . " / " . $pathArr[$i]; else mkdir($currentPath = $currentPath . " / " . $pathArr[$i]); } } // 生成静态文件 function Create() { $tmp = $this->Templet; foreach ($this->DataSource as $key => $value) { $tmp = str_replace(" < FIELD_" . $key . " > ", $value, $tmp); } $this->MkDir(dirname($this->fileName)); $this->Open(); $this->Write($tmp); $this->Close(); } } function CreateShtml() { ob_start("callback_CteateShtml"); } function callback_CteateShtml($buffer) { $page = intval(@$_REQUEST["page"]); $shtml = new Shtml(); $shtml->SetFileName($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'], ".php") . ($page == 0 ? "" : "_" . strval($page)) . ".html"); $shtml->Templet = $buffer; $shtml->Create(); return $buffer; } ?>