程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php中靜態化生成的方法

php中靜態化生成的方法

編輯:關於PHP編程

     例子,利用三個函數:ob_start()、ob_get_contents()、ob_end_clean()函數

    知識點:

    1、ob_start函數一般主要是用來開啟緩存,注意使用ob_start之前不能有任何輸出,如空格、字符等。

    2、ob_get_contents函數主要用來獲取緩存中的內容以字符串形式返回,注意此函數必須在ob_end_clean函數之前調用,否則獲取不到緩存內容。

    3、ob_end_clean函數主要是清空緩存中的內容並關閉緩存,成功則返回True,失敗則返回False

    輸出控制函數(Output Control)也就是使用和控制緩存來生成靜態HTML頁面,也會使用到PHP文件讀寫函數。

    PHP生成靜態頁面實例代碼

     代碼如下  

    <?  
        ob_start(); 

        echo "<html>".  
        "<head>".  
        "<title>PHP網站靜態化教程</title>".  
        "</head>".  
        "<body>歡迎訪問PHP網站開發教程網www.111cn.net 本文主要介紹PHP網站頁面靜態化的方法</body>".  
        "</html>";  
         
        $out1 = ob_get_contents();  
        ob_end_clean();  
        $fp = fopen("leapsoulcn.html","w");  
        if(!$fp)  
        {  
        echo "System Error";  
        exit();  
        }  
        else 
        {  
        fwrite($fp,$out1);  
        fclose($fp);  
        echo "Success";  
        }  
    ?>

    例子,

    利用框架模板生成最近比較火的php框架有thinkphp下面我們就以它為例子。

    thinkphp提供了一個有效的生成靜態頁的方法,(在tp2.0的手冊上有說明,3.0的手冊上沒有說明了,不過3.0方法還是存在的。)

     代碼如下  

    $this->buildHtml('靜態文件', '靜態路徑','模板文件');


    參數一:靜態文件,是指生成後的靜態文件名,文件保存路徑完整的就是:靜態路徑/靜態文件。例如靜態文件設置a/index.那麼保存的路徑就是項 目路徑/Html/a/index.html(默認的靜態路徑在項目路徑的Html文件夾下,沒有可以自己創建)

    參數二:靜態路徑,上面已經說明了默認的路徑,3.0中可以在入口文件裡加入參數來更改靜態路徑。 define('HTML_PATH', './');(將靜態路徑義為網站根目錄)


    參數三:模板文件,我感覺官方這個描述是不正確的,准確的來說應該是目標模塊,就是需要生成靜態文件的模塊。格式:模塊名:操作。比如要生成Index下的a方法為靜態文件,那就是Index:a。如果為空則默認生成當前操作的靜態文件。


    1 、在入口文件index.php文件中定義生成靜態頁面的文件位置,然後在個目錄新建Html文件夾

     代碼如下  

       define( 'HTML_PATH' , './Html' );//www..net


    2 、在根目錄的config文件夾中的config.php配置靜態頁面的類型,設為 html 

     代碼如下    'HTML_FILE_SUFFIX'        = > '.html' , // 默認靜態文件後綴


    3 、在“Tpl / default / ”目錄中新建一個Index的文件夾,文件夾下面新建一個index.html的模板,   模板裡面內容為:這是生成靜態頁例子

    4 、控制器IndexAction. class .php中的代碼

     代碼如下  

       class IndexAction extends Action{
         public function index(){
           $this - > buildHtml( '名稱' ,HTML_PATH. '/' , '模版' , 'utf8' ); //注意:這裡的utf8不能寫成utf-8
           $this - > display(); 
        }
      }

    解釋 :
        這裡的buildHtml是thinkphp內置的函數,這裡的意思是:
        將index的模板文件生成utf8編碼格式的靜態網頁,該文件名為 1 .html,存在於根目錄的htm文件中
        該函數有 5 個參數,具體如下 :
        buildHtml($htmlfile,$htmlpath,$templateFile,$charset,$contentType = 'text/html' )
    參數:
        $htmlfile 生成的靜態文件名稱
        $htmlpath 生成的靜態文件路徑
        $templateFile 指定要生成靜態的模板文件
        $charset 生成靜態文件的編碼格式

        $contentType 生成靜態文件的類型

    // 生成靜態頁

     代碼如下   class AddhtmlAction extends CommonAction {
        public function index(){
            $this->assign('abc', 'abc222222222');
            $pagename = '123 www..net';        //頁面名稱
            $temppath = '';        //顯示模版路徑
            //查看配置文件是否開啟顯示靜態模版
            if(C('IS_HTML'))
            {
                //判斷是否已經生成靜態頁面
                if(!is_file(HTML_PATH . '/'. $pagename .'html'))
                    $this->buildHtml($pagename, HTML_PATH.'/', 'index', 'utf8');//注意:index為動態模版 這裡的utf8不能寫成utf-8
                $temppath = HTML_PATH . '/'. $pagename .'html';
            }
            $this->display($temppath);
        }
    }
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved