<?
class Shtml 

var $message1="Error 1: You write class Shtml is Wrong ! The second parameter is 1 or 2 in this class!."; 
var $message2="Error 2: The file write Error."; 
function __construct ($Url,$FileBag,$FolderRoot,$FolderName,$fileid) 

$this->Url = $Url; 
$this->FileBag = $FileBag; 
$this->FileRoot = $FolderRoot; 
$this->FileName = $FolderName; 
$this->fileid = $fileid; 
Shtml::useFolder (); 

/*************获取数据*******************/ 
public function loadcontent ($Folder) 

ob_start(); 
require_once $this->Url; 
Shtml::writehtml ($Folder,ob_get_contents()); 
ob_clean(); 

/********** 指定文件夹*****************/ 
public function useFolder () 

if($this->FileBag==1) 

$Folder=$this->FileName; 

else if($this->FileBag==2) 

$Folder=date('Ymd',time()); 

else 

exit($this->message1); 

if(!is_dir($this->FileRoot.$Folder)){ mkdir($this->FileRoot.$Folder,0700);} Shtml::loadcontent ($Folder); } 
/********** 生成静态页面*****************/ 
public function writehtml ($Folder,$cache_value) 

$file = fopen($this->FileRoot.$Folder.'/'.$this->fileid.'.html','w+'); 
fwrite($file,$cache_value); 
fclose($file); 


$fileid=2; 
$shtml = new Shtml("http://www.hzwz.net",1,"cc","",$fileid); 
?>
在网上看到的一个生成html的一个累 请问这个类怎么样啊   $shtml = new Shtml("http://www.hzwz.net",1,"cc","",$fileid);   该放在哪个地方? 还有就是ob_get_contents这个函数 得到的是什么内容啊  请高手解答

解决方案 »

  1.   

    http://cn2.php.net/ob_get_contentsob_get_contents — Return the contents of the output buffer
      

  2.   

    在网上看到的一个生成html的一个累 请问这个类怎么样啊  $shtml = new Shtml("http://www.hzwz.net",1,"cc","",$fileid);  该放在哪个地方?
    放在类后面,或者在类的调用后面(前面require)
     还有就是ob_get_contents这个函数 得到的是什么内容啊  请高手解答缓冲区中的内容
      

  3.   

    我知道ob_get_contents  的用法  就是不知道 这个类是怎样生成静态页面的 这个类将放在什么地方?
      

  4.   

    这个类还成。
    原理就是利用require_once $this->Url; 读取对应URL的内容,然后利用ob_xxx函数将内容写到指定目录的文件里。其实楼主就把他当做一个普通的类来处理就好了,根本不用考虑更多的东西。
      

  5.   


    <?
    class Shtml
    {
      var $message1="Error 1: You write class Shtml is Wrong ! The second parameter is 1 or 2 in this class!.";
      var $message2="Error 2: The file write Error.";
      function __construct ($Url,$FileBag,$FolderRoot,$FolderName,$fileid)
      {
        //读取的URL地址
        $this->Url = $Url;
        $this->FileBag = $FileBag;
        $this->FileRoot = $FolderRoot;
        $this->FileName = $FolderName;
        $this->fileid = $fileid;
        Shtml::useFolder ();
      }
      /*************获取数据*******************/
      public function loadcontent ($Folder)   
      {
        ob_start();
        //用require_once 包含并执行一个对应的URL,不过require_once不支持远程文件。
        //个人认为他的意思是说,这个URL对应的文件,必须输出当前内容。
        require_once $this->Url;
        //用ob_get_contents获取上一个文件输出的内容。然后用writehtml来写入文件。
        Shtml::writehtml ($Folder,ob_get_contents());
        ob_clean();
      }
      /********** 指定文件夹*****************/
      public function useFolder ()
      { 
        //FileBag为 1的时候指定相关的文件,如果为1的时候,FolderName必须为空,否则在生成静态页面的时候,目录就构造错了。
        //为2的时候构造一个以年月日字符串的目录,如果不存在这个目录则建立这个目录。
        if($this->FileBag==1)
        {
         $Folder=$this->FileName;
        }
        else if($this->FileBag==2)  
        {
         $Folder=date('Ymd',time());
        }    if(!is_dir($this->FileRoot.$Folder)){ mkdir($this->FileRoot.$Folder,0700);}    Shtml::loadcontent ($Folder) ;
      }
      /********** 生成静态页面*****************/
      public function writehtml ($Folder,$cache_value)
      {
       $file = fopen($this->FileRoot.$Folder.'/'.$this->fileid.'.html','w+');
       fwrite($file,$cache_value);
       fclose($file);
      }
    }
    $fileid=2;
    $shtml = new Shtml("http://www.hzwz.net",1,"cc","",$fileid);
    ?> 仔细看这个类写得还有许多需要改进的地方,
    1 应该可以写得更oo些。是php4式的代码
    2 关于FileBag参数的问题不能相当然,还是让程序控制一下好。
      

  6.   

    谢谢楼上的解答  基本上明白这个类  但是现在最实际的问题是怎样 用他把动态的网站生成 html的   谁又更好的 php生成html的类  提供一个呀  感激不尽!!
      

  7.   

    php生成html,其实你可以利用任何一款模板类来做。
    其实就是文件的读写操作,文件的目录存放,以及文件的管理。
      

  8.   

    Smarty或者Discuz Template都是不错的选择。
      

  9.   

    你把ob_clean();去掉,你将会看到那个被你引用的页面,ob_get_contents就是用来获取你看到的这些东东的
      

  10.   

    discuz、PHPCMS用的模板估计写程序的最好使了,就跟写PHP代码差不多smarty还要记它的写法,记不住还要查手册,有点烦