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

 

posted @ 2012-08-03 13:24  人生工程师  阅读(282)  评论(0编辑  收藏  举报