* バッファーをフラッシュします... それともフラッシャーをバフしますか?
クラス 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();
}
}
}
http://www.bkjia.com/PHPjc/477728.htmlwww.bkjia.com本当http://www.bkjia.com/PHPjc/477728.html技術記事 CI を使用して静的なトップ セクションを生成します。これは非常に単純で、トップ セクション内のデータを読み出し、html ファイルに再書き込みし、最後にこの html ファイルが実行、承認、アップコードを表示します。