PHP静态类

PHP静态类

[PHP]代码

view source

print?

001<?php
002/******************8PHP静态类*************/
003class Shtml
004{
005var $Templet;
006var $DataSource;
007var $Dir;
008
009var $fileName;
010var $mod;
011var $handle;
012
013function 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// 绑定数据源,参数为一数组
025function BindData($arr)
026{
027$this->DataSource = $arr;
028}
029
030// 设置文件存放路径
031function SetDir($dir)
032{
033$this->Dir = $dir;
034}
035function SetFileName($fileName)
036{
037return $this->fileName = $fileName;
038}
039
040function GetMod()
041{
042return $this->mod;
043}
044function SetMod($mod)
045{
046return $this->mod = $mod;
047}
048function Open()
049{
050if (substr($this->fileName, 0, 1) == "/")
051$this->fileName = $_SERVER['DOCUMENT_ROOT'] . $this->fileName;
052if ($this->handle = fopen($this->fileName, $this->mod))
053return $this->handle;
054else
055return false;
056}
057function Close()
058{
059return fclose($this->handle);
060}
061function Write($content)
062{
063return fwrite($this->handle, $content);
064}
065function MkDir($pathname)
066{
067$currentPath = "";
068str_replace("", "/", $pathname);
069$pathArr = split("/", $pathname);
070if ($pathArr[0] == "") { //使用绝对路径
071$currentPath = $_SERVER['DOCUMENT_ROOT'];
072} else {
073$currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']);
074}
075for ($i = 0; $i < count($pathArr); $i++) {
076if ($pathArr[$i] == "")
077continue;
078else
079if (is_dir($currentPath . " / " . $pathArr[$i]))
080$currentPath = $currentPath . " / " . $pathArr[$i];
081else
082mkdir($currentPath = $currentPath . " / " . $pathArr[$i]);
083}
084}
085
086// 生成静态文件
087function Create()
088{
089$tmp = $this->Templet;
090foreach ($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
100function CreateShtml() {
101ob_start("callback_CteateShtml");
102}
103
104function 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();
110return $buffer;
111}
112?>
<?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; } ?>