萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> 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 生成靜態文件的類型

copyright © 萬盛學電腦網 all rights reserved