ホームページ >バックエンド開発 >PHPチュートリアル >Codeigniter による静的ページの生成_PHP チュートリアル

Codeigniter による静的ページの生成_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:09:06885ブラウズ

CI を使用して静的ページを生成するのは、実際には非常に簡単です。フォーラムで述べられているように、ページ内のデータを読み取り、HTML ファイルに書き込み、最後に HTML ファイルを表示します。

[php]
クラス MY_Loader は CI_Loader を拡張します {
パブリック関数 m_view($view, $vars = array(), $return = FALSE){
return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
}
保護された関数 _m_ci_load($_ci_data){
out out out out out out out Out Out Out Out Out Out Out Out out
($_ci_ext==='')?
foreach ($this->ci_view_paths as $_ci_view_file => $cascade){
$_ci_path = $_ci_view_file.$_ci_file; H $ _ci_html_path = $ _ ci_view_file. $ _ Ci_html_file // 静的ページを生成するパス
$file_exists = TRUE;
休憩。
}
}
}
……
//ここ
if(config_item("html")===TRUE){//静的ページの生成を有効にするかどうか
$_html_file=@fopen($_ci_html_path,'r');// .html ファイルを作成
$buffer = ob_get_contents();
@ob_end_clean(); _ If (! $ _ Html_file || (@Filesize ($ _ ci_html_path)! = Strlen ($buffer)) {//
$_html_file=@fopen($_ci_html_path,'w');
flock($_html_file, LOCK_EX); (Fwrite ($ _ html_file, $ バッファ);
flock($_html_file, LOCK_UN);
fclose($_html_file);
}
//echo(filesize($_ci_html_path)."-".strlen($buffer));
インクルード($_ci_html_path);
}
}
}
クラス MY_Loader は CI_Loader を拡張します {
パブリック関数 m_view($view, $vars = array(), $return = FALSE){
return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
}
保護された関数 _m_ci_load($_ci_data){
.....
$_ci_html_file=($_ci_ext==='')? $_ci_view.".html" : $_ci_view;//これ、静态页面の文書名
を生成
foreach ($this->ci_view_paths as $_ci_view_file => $cascade){
if (file_exists($_ci_view_file.$_ci_file)){
$_ci_path = $_ci_view_file.$_ci_file;
$_ci_html_path=$_ci_view_file.$_ci_html_file;// 静态页面の経路生成
$file_exists = TRUE;
休憩;
}
......
}
}
......
//在这
if(config_item("html")===TRUE){//否か开启生成静态页面
$_html_file=@fopen($_ci_html_path,'r');//创建.html文件
$buffer = ob_get_contents();
@ob_end_clean();
if(!$_html_file||(@filesize($_ci_html_path)!=​​strlen($buffer))){ //如果文件不存在または文件已更变
$_html_file=@fopen($_ci_html_path,'w');
flock($_html_file, LOCK_EX);
fwrite($_html_file, $buffer);                  
flock($_html_file, LOCK_UN);
fclose($_html_file);
}
//echo(filesize($_ci_html_path)."-".strlen($buffer));
include($_ci_html_path);
}
......
}
}调用
[html]
$this->load->m_view('login',$datas);  
$this->load->m_view('login',$datas);
HTML文書を生成するかどうか
$config["html"] = TRUE;
全代码如下
[php]
クラス MY_Loader は CI_Loader を拡張します {
public function m_view($view, $vars = array(), $return = FALSE){
return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));  
}
保護された関数 _m_ci_load($_ci_data){
// デフォルトのデータ変数を設定します
foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val){
$$_ci_val = isset($_ci_data[$_ci_val]) $_ci_data[$_ci_val] : FALSE;
}
$file_exists = FALSE;
// リクエストされたファイルへのパスを設定します
if (is_string($_ci_path) && $_ci_path !== ''){
$_ci_x =explode('/', $_ci_path);//ある文字列を使用して別の文字列を分割します F $ _ci_file = end ($ _ ci_x) // 配列の内部ポインタを最後のユニットにポイントします
;
}その他{
$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);// ファイル パス情報を返します
$_ci_file = ($_ci_ext === '') $_ci_view.'.php' : $_ci_view;
($_ci_ext==='')?
foreach ($this->ci_view_paths as $_ci_view_file => $cascade){
$_ci_path = $_ci_view_file.$_ci_file; H $ _ci_html_path = $ _ ci_view_file. $ _ Ci_html_file // 静的ページを生成するパス
$file_exists = TRUE;
休憩。
}
if ( ! $cascade){
休憩。
}
}
}
if ( ! $file_exists && ! file_exists($_ci_path))
show_error('要求されたファイルをロードできません: '.$_ci_file);
}
// これにより、$this->load を使用してロードされたものはすべて許可されます (ビュー、ファイルなど)
// コントローラーおよびモデル関数内からアクセス可能になります。
$_ci_CI =& get_instance();
foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var)
if ( ! isset($this->$_ci_key))
$this->$_ci_key =& $_ci_CI->$_ci_key;
}
}
/*
* 変数を抽出してキャッシュする
*
* 専用の $this->load->vars() を使用して変数を設定することもできます
* 関数、またはこの関数の 2 番目のパラメーターを介して
をマージします。
* 2 つのタイプをキャッシュし、
内に埋め込まれたビューがキャッシュされるようにします。
* 他のビューもこれらの変数にアクセスできます。
if (is_array($_ci_vars))
$this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars);  
}
extract($this->_ci_cached_vars);  
/*
* 出力をバッファリングします
*
* 出力をバッファリングする理由は次の 2 つです:
* 1. スピード。速度が大幅に向上します。 
* 2. 最終的にレンダリングされたテンプレートを
で後処理できるようにする
* 出力クラス。なぜ後処理が必要なのでしょうか?まず、
* ページの読み込み経過時間を表示するため。できない限り
* コンテンツがブラウザに送信される直前にインターセプトし、
* その後、タイマーを停止すると正確ではなくなります。 
*/
ob_start();  
// PHP インストールが短いタグをサポートしていない場合は、
// 短いタグを変更して、小さな文字列の置換を行います
// 標準の PHP echo ステートメントに変換します。   
if ( ! is_php('5.4') && (bool) @ini_get('short_open_tag') === FALSE
&& config_item('rewrite_short_tags') === TRUE && function_usable('eval')
)
{
echo eval('?>'.preg_replace('/;*s*?>/', '; ?>', str_replace('
}
その他
{
include($_ci_path); // include() と include_once() では、同じ名前の複数のビューが許可されます
}
log_message('debug', 'ロードされたファイル: '.$_ci_path);  
// 要求された場合はファイル データを返します
if ($_ci_return === TRUE)
{
$buffer = ob_get_contents();  
@ob_end_clean();  
$buffer を返します。  
}
//在这
if(config_item("html")===TRUE){//否か开启生成静态页面
$_html_file=@fopen($_ci_html_path,'r');//创建.html文件
$buffer = ob_get_contents();  
@ob_end_clean();  
if(!$_html_file||(@filesize($_ci_html_path)!=​​strlen($buffer))){
$_html_file=@fopen($_ci_html_path,'w');  
flock($_html_file, LOCK_EX);  
fwrite($_html_file, $buffer);                    
flock($_html_file, LOCK_UN);  
fclose($_html_file);  
}
//echo(filesize($_ci_html_path)."-".strlen($buffer));   
include($_ci_html_path);  
}
/*
* バッファーをフラッシュします... それともフラッシャーをバフしますか? 
*
* ビューを
内でネストできるようにするため
* 他のビュー、いつでもコンテンツをフラッシュして戻す必要があります
* 出力バッファリングの最初のレベルを超えているため、
* 最初にインクルードされたものによって正しく表示され、インクルードされます
* テンプレートとそれ以降のテンプレート。おい! 
*/
if (ob_get_level() > $this->_ci_ob_level + 1)
{
ob_end_flush();  
}
その他
{
$_ci_CI->output->append_output(ob_get_contents());  
@ob_end_clean();  
}
}
}
クラス MY_Loader は CI_Loader を拡張します {
public function m_view($view, $vars = array(), $return = FALSE){
return $this->_m_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
}
保護された関数 _m_ci_load($_ci_data){
// デフォルトのデータ変数を設定します
foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val){
$$_ci_val = isset($_ci_data[$_ci_val]) ? $_ci_data[$_ci_val] : FALSE;
}
$file_exists = FALSE;
// リクエストされたファイルへのパスを設定します
if (is_string($_ci_path) && $_ci_path !== ''){
$_ci_x =explode('/', $_ci_path);//一个字符串分割另一字符串を使用します
$_ci_file = end($_ci_x);// 将数組の内部指针指向 最後の一单元
}その他{
$_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION);// 文件路径の情報を返します
$_ci_file = ($_ci_ext === '') ? $_ci_view.'.php' : $_ci_view;
$_ci_html_file=($_ci_ext==='')? $_ci_view.".html" : $_ci_view;//これ、静态页面の文書名を生成します
foreach ($this->ci_view_paths as $_ci_view_file => $cascade){
if (file_exists($_ci_view_file.$_ci_file)){
$_ci_path = $_ci_view_file.$_ci_file;
$_ci_html_path=$_ci_view_file.$_ci_html_file;// 静态页面の経路生成
$file_exists = TRUE;
休憩;
}
if ( ! $cascade){
休憩;
}
}
}
if ( ! $file_exists && ! file_exists($_ci_path))
{
show_error('要求されたファイルをロードできません: '.$_ci_file);
}
// これにより、$this->load を使用してロードされたものはすべて許可されます (ビュー、ファイルなど)
// コントローラーおよびモデル関数内からアクセスできるようになります。
$_ci_CI =& get_instance();
foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var)
{
if ( ! isset($this->$_ci_key))
{
$this->$_ci_key =& $_ci_CI->$_ci_key;
}
}
/*
* 変数を抽出してキャッシュします
*
* 専用の $this->load->vars() を使用して変数を設定することもできます
* 関数、またはこの関数の 2 番目のパラメーターを使用します。合併します
* 2 つのタイプをキャッシュし、その中に埋め込まれたビューが保存されるようにします
* 他のビューはこれらの変数にアクセスできます。
*/
if (is_array($_ci_vars))
{
$this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars);
}
extract($this->_ci_cached_vars);
/*
* 出力をバッファリングします
*
* 出力をバッファリングする理由は 2 つあります:
* 1. スピード。速度が大幅に向上します。
* 2. 最終的にレンダリングされたテンプレートを
で後処理できるようにする
* 出力クラス。なぜ後処理が必要なのでしょうか?まず、
* ページの読み込み経過時間を表示するため。できなければ
* コンテンツがブラウザに送信される直前にインターセプトし、
* その場合はタイマーを停止してください。正確ではありません。
*/
ob_start();
// PHP インストールが短いタグをサポートしていない場合は、
// 短いタグを変更して、小さな文字列の置換を行います
// 標準の PHP echo ステートメントに変換します。
if ( ! is_php('5.4') && (bool) @ini_get('short_open_tag') === FALSE
&& config_item('rewrite_short_tags') === TRUE && function_usable('eval')
)
{
echo eval('?>'.preg_replace('/;*s*?>/', '; ?>', str_replace('
}
それ以外
{
include($_ci_path); // include() と include_once() では、同じ名前の複数のビューが許可されます
}
log_message('debug', 'ロードされたファイル: '.$_ci_path);
// 要求された場合はファイル データを返します
if ($_ci_return === TRUE)
{
$buffer = ob_get_contents();
@ob_end_clean();
$buffer を返す;
}
//在这
if(config_item("html")===TRUE){//否か开启生成静态页面
$_html_file=@fopen($_ci_html_path,'r');//创建.html文件
$buffer = ob_get_contents();
@ob_end_clean();
if(!$_html_file||(@filesize($_ci_html_path)!=​​strlen($buffer))){
$_html_file=@fopen($_ci_html_path,'w');
flock($_html_file, LOCK_EX);
fwrite($_html_file, $buffer);                  
flock($_html_file, LOCK_UN);
fclose($_html_file);
}
//echo(filesize($_ci_html_path)."-".strlen($buffer));
include($_ci_html_path);
}
/*
* バッファをフラッシュします... それともフラッシャーをバフしますか?
*
* ビューをネストできるようにするため
* 他のビューでは、いつでもコンテンツをフラッシュして戻す必要があります
* 出力バッファリングの最初のレベルを超えているため、
*最初にインクルードすることで正しく表示されインクルードされます
* テンプレートとそれ以降のテンプレート。おい!
*/ www.2cto.com
if (ob_get_level() > $this->_ci_ob_level + 1)
{
ob_end_flush();
}
それ以外
{
$_ci_CI->output->append_output(ob_get_contents());
@ob_end_clean();
}
}
}

www.bkjia.com本当http://www.bkjia.com/PHPjc/477728.html技術記事 CI を使用して静的なトップ セクションを生成します。これは非常に単純で、トップ セクション内のデータを読み出し、html ファイルに再書き込みし、最後にこの html ファイルが実行、承認、アップコードを表示します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。