php静态化类
一、静态化类
复制以下代码,存为文件static.class.php
1 <?php 2 /** 3 * filename: static.class.php 4 * @author: phpwk http://www.55nav.com 5 * @copyright: Copyright 2011 phpwk 6 * @license: version 1.0 7 * @create: 2011-11-22 8 * @modify: phpwk 2011-11-23 9 * description: 静态类,可以将php输出的内容生成静态文件,还有替换指定标签功能 10 * method of use: 至少传递三个参数$buffer,$filename,$filepath 11 * example: 12 */ 13 class Shtml 14 { 15 function Shtml() 16 { 17 $this->Templet = ""; 18 $this->DataSource = array(); 19 $this->fileName = ""; 20 $this->mod = "wb"; 21 $this->handle = false; 22 } 23 //绑定数据源,参数为一数组 24 function BindData($arr) 25 { 26 $this->DataSource = $arr; 27 } 28 //设置路径及文件名 29 function SetFileName($fileName) 30 { 31 return $this->fileName = $fileName; 32 } 33 function Open() 34 { 35 if ($this->handle = fopen($this->fileName, $this->mod)) 36 return $this->handle; 37 else 38 return false; 39 } 40 function Close() 41 { 42 return fclose($this->handle); 43 } 44 function Write($content) 45 { 46 return fwrite($this->handle, $content); 47 } 48 //建立目录,支持绝对路径与相对路径,相对路径相对于当前脚本。linux下注意要有权限 49 function MkDir($pathname) 50 { 51 if($pathname){ 52 str_replace("\\", "/", $pathname); 53 if(!file_exists($pathname)){ 54 if(!@mkdir($pathname,0777)){ 55 echo "建立文件夹失败"; 56 exit; 57 } 58 } 59 }else{ 60 return false; 61 } 62 } 63 // 生成静态文件 64 function Create() 65 { 66 $tmp = $this->Templet; 67 foreach ($this->DataSource as $key => $value) { 68 $tmp = str_replace( $key , $value, $tmp); 69 } 70 $this->MkDir(dirname($this->fileName)); 71 $this->Open(); 72 $this->Write($tmp); 73 $this->Close(); 74 } 75 } 76 ?>
二、使用方法
复制以下代码,存为一个php文件,如test.php
1 <?php 2 include("static.class.php"); 3 for($i=0;$i<10;$i++){ 4 ob_start(); 5 echo "1234567890".$i;//要生成静态页面的内容 6 $buffer=ob_get_contents(); 7 ob_end_clean(); 8 $filename=$i.".html"; 9 //$filepath=$_SERVER['DOCUMENT_ROOT'].dirname($_SERVER['PHP_SELF'])."/a/";//绝对路径 10 $filepath="../a/";//相对路径 11 $arr=array("1"=>"a","3"=>"c");//标签替换规则 12 CreateShtml($buffer,$filename,$filepath,$arr); 13 } 14 function CreateShtml($buffer,$filename,$filepath,$arr=array()) { 15 $shtml = new Shtml(); 16 $shtml->SetFileName($filepath.$filename); 17 $shtml->Templet = $buffer; 18 $shtml->BindData($arr); 19 $shtml->Create(); 20 } 21 ?>