PHPで静的ページを出力する2つの方法

3452 ワード

1つ目:テンプレートの利用
現在PHPのテンプレートは多く、強力なsmartyや、使いやすいsmarttemplateなどがあります.各テンプレートには、出力内容を取得する関数があります.静的ページを生成する方法は,この関数を利用することである.この方法を用いる利点は,コードが比較的明瞭で,可読性がよいことである.
 
ここではsmartyを例に、静的ページを生成する方法を説明します.
<?php
require('smarty/Smarty.class.php');
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
// fetch() , $content ,
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

 
第2の方法:obシリーズの関数を利用する
ここで用いる関数は主にob_start(), ob_end_flush(), ob_get_content()、ob_start()はブラウザバッファを開くという意味で、バッファを開くとPHPプログラムからの非ファイルヘッダ情報はすべて送信されず、ob_が使用されるまで内部バッファに保存されますend_flush().ここで最も重要な関数はob_ですget_contents()は、この関数の役割はバッファの内容を取得することであり、上のfetch()に相当し、道理は同じである.コード:
<?php
ob_start();
echo "Hello World!";
$content = ob_get_contents();// php
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

 
 
ob_start()関数:出力バッファを開く.
関数フォーマットvoid ob_start(void)
説明:バッファがアクティブになっている場合、PHPプログラムからの非ファイルヘッダ情報はすべて送信されず、内部バッファに保存されます.バッファの内容を出力するにはob_を使用します.end_flush()またはflush()は、バッファの内容を出力します.
 
Flush:バッファの内容をリフレッシュし、出力します.
関数フォーマット:flush()
説明:この関数はよく使われていて、効率が高いです.
 
ob_get_contents:内部バッファの内容を返します.
関数フォーマット:string ob_get_contents(void)
説明:この関数は現在のバッファの内容を返し、出力バッファがアクティブでない場合はFALSEを返します.
 
ob_get_length:内部バッファの長さを返します.
関数フォーマット:int ob_get_length(void)
説明:この関数は現在のバッファの長さを返します.およびob_get_contents同様に、出力バッファがアクティブでない場合はFALSEに戻る.
 
ob_end_Clean:内部バッファの内容を削除し、内部バッファを閉じます.
関数フォーマット:void ob_end_clean(void)
説明:この関数は内部バッファの内容を出力せずに削除します.
 
ob_end_flush:内部バッファの内容をブラウザに送信し、出力バッファを閉じます.
関数フォーマット:void ob_end_flush(void)
説明:この関数は出力バッファの内容を送信します(もしあれば)
 
ob_implicit_flush:絶対リフレッシュをオンまたはオフ
関数フォーマット:void ob_implicit_flush ([int flag])
説明:デフォルトではバッファを閉じ、絶対出力を開くと、各スクリプト出力がブラウザに直接送信され、flush()を呼び出す必要はなくなります.
回転:
http://www.cnblogs.com/analyzer/articles/1064740.html