当前位置:Linux教程 - Php - 动态页面生成静态页面的类

动态页面生成静态页面的类

动态页面生成静态页面的类
PHP代码:--------------------------------------------------------------------------------

<?php
/*
    *类名    StaticPage
    *功能    生成静态页面
    *版本    1.0
    *日期    2003-11-5
    *作者    Double_ycn
    *版权    Double_ycn
    *说明    请在php文件第一行写上ob_star()
*/
class StaticPage{
    var
$fileName;                //静态页面的文件名
    
var $root;                    //存放静态页面的目录
    
var $page;                    //静态页面内容

    /*
        *方法    staticPage
        *功能    构造函数
        *参数    $f            
                $r
        *返回    无
    */
    
function StaticPage($f,$r='.',$mode=0700){
        
$this->fileName=$f;
        
$this->root=$this->setRoot($r,$mode);
    }


    
/* ==========> 设定部分<============= */

    /*
        *方法    setRoot
        *功能    建立目录
        *参数    $path:目录
                $mode:格式
        *返回    str
    */
    
function setRoot($path,$mode=0700) {
        
//$path=str_replace("/","\",$path);
        
$dirs = explode("\",realpath($path));
        $path = $dirs[0];
        for($i = 1;$i < count($dirs);$i++) {
            $path .= "
/".$dirs[$i];
            if(!is_dir($path))
                mkdir($path,$mode);
        }
        if(is_dir($path)){
            return $path;
        }
        else{
            echo "
无法建立目录";
            exit;
        }
        
    }

    /*
        *方法    setPage
        *功能    建立目录
        *参数    $p:静态页面内容
        *返回    str
    */
    function setPage($p=''){
        if(empty($p)){
            if(!$p=ob_get_contents()){
                echo "
页面设置有错误";
                exit;
            }
        }
        $this->page=$p;
    }

    /* ==========>取得部分<============= */

    /*
        *方法    getRoot
        *功能    得到目录
        *参数    $num:从第几个数组开始取
        *返回    str
    */
    function getRoot($num=1){
        $dirs = explode("
/",$this->root);
        for($i=$num;$i<count($dirs);$i++){
            $path .= "
/".$dirs[$i];
            
        }
        return $path;
    }

    /*
        *方法    getFile
        *功能    得到文件名
        *参数    无
        *返回    str
    */
    function getFile(){
        return $this->fileName;
    }

    /*
        *方法    getFullName
        *功能    得到目录+文件名
        *参数    $num:截取第几个目录
        *返回    str
    */
    function getFullName($num=1){
        return $this->getRoot($num)."
/".$this->fileName;
    }

    /* ==========>建立部分<============= */

    /*
        *方法    setHtml
        *功能    生成静态页面
        *参数    无
        *返回    无
    */
    function setHtml(){
        $fp = fopen($this->root."
/".$this->fileName, "w");
        fwrite($fp, $this->page);
        fclose($fp);
    }
}

/*
$sp=new StaticPage($id."
.html","../page/help/".date("Y-m-d"));
echo $sp->getFullName(3);
$sp->buildPage();
unset($sp);
*/
?>

--------------------------------------------------------------------------------

例子

PHP代码:--------------------------------------------------------------------------------

<?php
ob_start();

......

require_once("
../class/staticPage.inc");
/*
说明:变量全部由省略的程序得到
$id是要生成静态页面的数据库里的唯一标识.作为文文件名(也可以用日期,只要是唯一的值就可以)
$riqi:作为目录名.数据库中的日期
*/
$sp=new StaticPage($id."
.shtml","../page/help/".$riqi);
$sp->setPage();
$sp->setHtml();
unset($sp);
?>

--------------------------------------------------------------------------------

怎么应用!让地址挂上静态页面

通过上面生成静态页面后



PHP代码:--------------------------------------------------------------------------------

<?php
.....
/* =======>最新招聘信息<======== */
$sql="
select z.id,companyName as cop,job,xueLi,z.riqi from ".TB_ZPINF." z left join ".TB_USER." u on z.userName=u.name where z.nominate!=0 order by z.id desc limit 0,10";
$db->query($sql);
while($db->next_record()){
    $riqi=$db->f("
riqi");
    $id=$db->f("
id");
    
    if(file_exists("
../page/dcrc/qzxx/".$riqi."/".$id.".shtml"))
        $url="
../page/dcrc/qzxx/".$riqi."/".$id.".shtml";
    else
        $url="
zpxx.php?navId=34&id=$id";

    $t->set_var(array("
zpxxUrl"=>$url,
                        "
cop"=>$db->f("cop"),
                        "
job"=>$db->f("job"),
                        "
xueLi"=>$db->f("xueLi"),
                        "
riqi"=>$riqi));
    $t->parse("
zpxx","ZhaoPinXinXi",true);
}
/* =======>结束最新招聘信息<======== */

....
?>

--------------------------------------------------------------------------------

主要看这部分.



PHP代码:--------------------------------------------------------------------------------
<?PHP
if(file_exists("
../page/dcrc/qzxx/".$riqi."/".$id.".shtml"))
        $url="
../page/dcrc/qzxx/".$riqi."/".$id.".shtml";
    else
        $url="
zpxx.php?navId=34&id=$id";
?>