検索
ホームページバックエンド開発PHPチュートリアルCI フレームワークのソース コードの読み取り----------Output.php_PHP チュートリアル

[php]  

/** 
* コードイグナイター
*
* PHP 5.1.6 以降用のオープンソース アプリケーション開発フレームワーク
*
* @package CodeIgniter
* @author ExpressionEngine 開発チーム
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
* @license http://codeigniter.com/user_guide/license.html
* @link http://codeigniter.com
* @since バージョン 1.0
* @filesource
 */
// ----------------------------------------------- ------------------------
/**
* 出力クラス
*
* 最終出力をブラウザに送信する責任があります
* 最終出力をブラウザに送信する責任があります
* @パッケージCodeIgniter
* @subpackage ライブラリ
* @category 出力
* @author ExpressionEngine 開発チーム
* @link http://codeigniter.com/user_guide/libraries/output.html
*/
クラス CI_Output {
/**
* 現在の出力文字列
* 現在の出力文字列
*
* @var 文字列
* @access 保護されています
*/
protected $final_output;  
/**
* キャッシュの有効期限
* キャッシュの有効期限
* @var int
* @access 保護されています
*/
protected $cache_expiration = 0;  
/**
* サーバーヘッダーのリスト
* サーバーヘッダーリスト
* @var 配列
* @access 保護されています
*/
protected $headers = array();  
/** 
* MIME タイプのリスト
*
* @var 配列
* @access protected
     */
protected $mime_types = array();  
/**
* プロファイラーが有効かどうかを決定します
* アナライザーを有効にするかどうか
* @var本
* @access 保護されています
*/
protected $enable_profiler = FALSE;  
/**
* 出力圧縮が有効かどうかを決定します
* 出力圧縮を有効にするかどうか
* @var bool
* @access 保護されています
*/
protected $_zlib_oc = FALSE;  
/**
* プロファイラーセクションのリスト
* アナライザーリスト
*
* @var 配列
* @access 保護されています
*/
protected $_profiler_sections = array();  
/**
* {elapsed_time} や {memory_usage} などの変数を解析するかどうか
* 否か解析变量{elapsed_time}と{memory_usage}
* 注意文档说这里有错详见http://codeigniter.org.cn/user_guide/libraries/output.html
*最下方
* @var bool
* @access 保護されています
*/
保護された $parse_exec_vars = TRUE
/** 
* コンストラクター
*
     */
関数__construct()
{
置 // 設定項目 zlib.output_compression の値を返し、それを $this- & _zlib_oc に渡します
;
// 設定項目で出力圧縮機能がオンになっている場合、$this->_zlib_oc の値はオンになります
$this->_zlib_oc = @ini_get('zlib.output_compression');
// 後で使用するために MIME タイプを取得します
// MIME タイプを取得します
if (define('ENVIRONMENT') AND file_exists(APPPATH.'config/'.ENVIRONMENT.'/mimes.php'))
APPPATH.'config/'.ENVIRONMENT.'/mimes.php' をインクルードします
}
その他
APPPATH.'config/mimes.php' をインクルードします
}
// $mimes は mimes.php で定義された配列です
$this->mime_types = $mimes;
Log_message('debug', "出力クラスが初期化されました");
}
// ----------------------------------------------- --- --------------------------
/**
* 出力を取得する
* この方法を使用すると、出力するデータを取得して保存することができます
* 現在の出力文字列を返します
* 現在の出力文字列を返します
* @アクセス公開
* @戻り文字列
*/
関数get_output()
{
️戻る-- $this を返す->FINAL_OUTPUT;
}
// ----------------------------------------------- --- --------------------------
/**
* 出力を設定します
*
* 出力文字列を設定します
* 出力文字列を設定します
* @アクセス公開
* @パラメータ文字列
* @return void
*/
関数 set_output($output)
{
$this->final_output = $output;
$this を返します。
}
// ----------------------------------------------- --- --------------------------
/**
* 出力を追加
* 最終出力文字列の後にデータを追加します
* 出力文字列にデータを追加します
*
* @アクセス公開
* @パラメータ文字列
* @return void
*/
関数append_output($output)
{
if ($this->final_output == '')
$this->final_output = $output;
}
その他
$this->final_output .= $output;  
}
$this を返します。  
}
// ----------------------------------------------- ---------------------
/**
* ヘッダーを設定します
* このメソッドを使用すると、ブラウザに送信する HTTP プロトコルのヘッダーを設定できます。これは、PHP の標準関数 header() に相当します。
* 最終的な表示で出力されるサーバーヘッダーを設定できます。
* 最終的な表示出力のサーバーヘッダーを設定できます。
* 注: ファイルがキャッシュされている場合、ヘッダーは送信されないことを理解する必要があります
* ヘッダーデータをキャッシュデータと一緒に保存することを許可する方法...
*
* @アクセス公開
* @パラメータ文字列
* @param bool
* @return void
*/
function set_header($header, $replace = TRUE)
{
// zlib.output_compression が有効な場合、出力が圧縮されます。
// ただし、
の补偿を補うためにコンテンツ長ヘッダーは変更されません
// 削減减少还原により、追加のデータを待機している間にブラウザがハングします。  
// そのような場合は、content-length をスキップします。  
if ($this->_zlib_oc && strncasecmp($header, 'content-length', 14) == 0)
{
戻る;  
}
$this->headers[] = array($header, $replace);  
$this を返します。  
}
// ----------------------------------------------- ---------------------
/** 
* コンテンツ タイプ ヘッダーを設定します
* 設置Content-Type
* @access public
* @param 文字列 出力するファイルの拡張子
* @return void
     */
関数 set_content_type($mime_type)
{
if (strpos($mime_type, '/') === FALSE)
{
$extension = ltrim($mime_type, '.');  
// この拡張機能はサポートされていますか?  
if (isset($this->mime_types[$extension]))
{
$mime_type =& $this->mime_types[$extension];  
if (is_array($mime_type))
{
$mime_type = current($mime_type);  
}
}
}
$header = 'Content-Type: '.$mime_type;  
$this->headers[] = array($header, TRUE);  
$this を返します。  
}
// ----------------------------------------------- ---------------------
/**
* HTTP ステータス ヘッダーを設定します
* 1.7.2 の共通手続き関数に移動
* 允许你手動设置服务器状態态头(ヘッダー)
* @access public
* @param int ステータスコード
* @param string
* @return void
*/
function set_status_header($code = 200, $text = '')
{
set_status_header($code, $text);  
$this を返します。  
}
// ----------------------------------------------- ---------------------
/**
* プロファイラーを有効/無効にする
* アナライザーを有効または無効にすることができます
* @アクセス公開
* @param bool
* @return void
*/
関数enable_profiler($val = TRUE)
{
$this->enable_profiler = (is_bool($val)) ? $val : TRUE;  
$this を返します。  
}
// ----------------------------------------------- ---------------------
/**
* プロファイラーセクションを設定する
* $this->_profiler_sections を設定します
* プロファイラー セクション表示のデフォルト/構成設定の上書きを許可します
* 有効になっている場合、レビューアーの特定の部分を制御 (オン/オフ) できます
*
* @アクセス公開
* @param配列
* @return void
*/
関数 set_profiler_sections($sections)
{
foreach ($sections as $section => $enable)
{
$this->_profiler_sections[$section] = ($enable !== FALSE) ?真/偽;  
}
$this を返します。  
}
// ----------------------------------------------- ---------------------
/**
* キャッシュを設定する
* キャッシュとキャッシュ時間を設定します
* @アクセス公開
* @param integer $time はキャッシュを更新する分数です
* @return void
*/
関数キャッシュ($time)
{
$this->cache_expiration = ( ! is_numeric($time)) ? 0 : $時間;  
$this を返します。  
}
// ----------------------------------------------- ---------------------
/**
* ディスプレイ出力
* 显示输出
* すべての「ビュー」データは、コントローラー クラスによって自動的にこの変数に入れられます:
*
* $this->final_output
*
* この関数は、最終的な出力データをブラウザに送信します
* サーバーヘッダーとプロファイルデータを含みます。  
も停止します
* ページのレンダリング速度とメモリ使用量を表示できるベンチマーク タイマー。 
*
* @access public
* @パラメータ文字列
* @return 混合
*/
関数 _display($output = '')
{
// 注: $CI =& get_instance() を使用できないため、グローバルを使用します
// この関数はキャッシュメカニズムによって呼び出される場合があるため、
// これは CI スーパー オブジェクトが利用可能になる前に発生します
グローバル $BM、$CFG
// 可能であればスーパー オブジェクトを取得します
// // もちろん、スーパーコントローラーが手に入るなら、まずそれを手に入れます。
if (class_exists('CI_Controller'))
$CI =& get_instance();
}
--------------------------------------
// 出力データを設定します
if ($output == '')
$output =& $this->final_output;
}
--------------------------------------
// コントローラーに
がない場合にのみ、キャッシュ ファイルを書き込む必要がありますか?
// 独自の _output() メソッドであり、キャッシュ ファイルを扱っていません。
// 上記の $CI オブジェクトの存在によって判断できます
// キャッシュ時間 > 0 の場合、$ CI スーパー オブジェクトが存在し、そのスーパー オブジェクトの下に _output メソッドが存在します
// _write_cache メソッドを呼び出してキャッシュ ファイルを書き込みます
if ($this->cache_expiration > 0 && isset($CI) && ! Method_exists($CI, '_output'))
$this->_write_cache($output);
}
--------------------------------------
// 経過時間とメモリ使用量を解析します。
// 次に、疑似変数をデータと交換します
// コードの実行時間とメモリ使用時間を計算します
$elapsed = $BM->elapsed_time('total_execution_time_start', 'total_execution_time_end');
// $this->parse_exec_vars が true の場合、{elapsed_time}、{memory_usage} が出力されます
// 計算された時間に置き換えます。
if ($this->parse_exec_vars === TRUE)
$memory = ( ! function_exists('memory_get_usage')) '0' :round(memory_get_usage()/1024/1024, 2)
;
$output = str_replace('{elapsed_time}', $elapsed, $output);
$output = str_replace('{memory_usage}', $memory, $output);
}
--------------------------------------
// 圧縮送信の処理が要求されていますか?
if ($CFG->item('compress_output') === TRUE && $this->_zlib_oc == FALSE)
if (extension_loaded('zlib'))
{
if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) AND strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE)
{
ob_start('ob_gzhandler');  
}
}
}
// ------------------------------------------- ---------------------
// 送信するサーバー ヘッダーはありますか?  
// 有没服务器头発行?
if (count($this->headers) > 0)
{
foreach ($this->headers as $header)
{
@header($header[0], $header[1]);  
}
}
// ------------------------------------------- ---------------------
// $CI オブジェクトは存在しますか?  
// そうでない場合は、キャッシュ ファイルを扱っていることがわかっているため、
// データをエコーアウトして終了します。  
// 如果無し$CI就证明当前是一存存出,我们只简单的送信データ据并退出
if ( ! isset($CI))
{
echo $output;  
log_message('debug', "ブラウザに送信された最終出力");  
log_message('debug', "合計実行時間: ".$elapsed);  
TRUE を返します。  
}
// ------------------------------------------- ---------------------
// プロファイル データを生成する必要がありますか?  
// その場合は、Profile クラスをロードして実行します。  
// 如果开启了性能分析我们就调用、
// 会議は、私を助けるためにいくつかの報告を面尾部に生成します。
if ($this->enable_profiler == TRUE)
{
$CI->load->library('profiler');  
if ( ! emptyempty($this->_profiler_sections))
{
$CI->profiler->set_sections($this->_profiler_sections);  
}
// 出力データに終了
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPおよびPython:さまざまなパラダイムが説明されていますPHPおよびPython:さまざまなパラダイムが説明されていますApr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHPとPython:彼らの歴史を深く掘り下げますPHPとPython:彼らの歴史を深く掘り下げますApr 18, 2025 am 12:25 AM

PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

PHPとPythonの選択:ガイドPHPとPythonの選択:ガイドApr 18, 2025 am 12:24 AM

PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

PHPとフレームワーク:言語の近代化PHPとフレームワーク:言語の近代化Apr 18, 2025 am 12:14 AM

PHPは、多数のWebサイトとアプリケーションをサポートし、フレームワークを通じて開発ニーズに適応するため、近代化プロセスで依然として重要です。 1.PHP7はパフォーマンスを向上させ、新機能を紹介します。 2。Laravel、Symfony、Codeigniterなどの最新のフレームワークは、開発を簡素化し、コードの品質を向上させます。 3.パフォーマンスの最適化とベストプラクティスは、アプリケーションの効率をさらに改善します。

PHPの影響:Web開発などPHPの影響:Web開発などApr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?スカラータイプ、リターンタイプ、ユニオンタイプ、ヌル可能なタイプなど、PHPタイプのヒントはどのように機能しますか?Apr 17, 2025 am 12:25 AM

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?PHPは、オブジェクトのクローニング(クローンキーワード)と__Clone Magicメソッドをどのように処理しますか?Apr 17, 2025 am 12:24 AM

PHPでは、クローンキーワードを使用してオブジェクトのコピーを作成し、\ _ \ _クローンマジックメソッドを使用してクローン動作をカスタマイズします。 1.クローンキーワードを使用して浅いコピーを作成し、オブジェクトのプロパティをクローン化しますが、オブジェクトのプロパティはクローニングしません。 2。\ _ \ _クローン法は、浅いコピーの問題を避けるために、ネストされたオブジェクトを深くコピーできます。 3.クローニングにおける円形の参照とパフォーマンスの問題を避けるために注意し、クローニング操作を最適化して効率を向上させます。

PHP対Python:ユースケースとアプリケーションPHP対Python:ユースケースとアプリケーションApr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター