輸出類
輸出類是只有一個(gè)主要功能的簡(jiǎn)單的類: 發(fā)送最終的Web頁(yè)面到所請(qǐng)求的瀏覽器。如果您開(kāi)啟緩存功能,他還負(fù)責(zé)緩存您的網(wǎng)頁(yè)文件。
輸出類雖然很簡(jiǎn)單,但是它實(shí)現(xiàn)的功能卻很重要咯: 輸出最后的執(zhí)行結(jié)果給發(fā)送請(qǐng)示的瀏覽器. 如果你選擇了使用緩存 ,這塊也歸它管.
注意:輸出類的初始化操作是由系統(tǒng)自動(dòng)完成的,基本上不用你操心.
在一般的情況下你是感覺(jué)到不到它的存在的(也用不著去關(guān)心),對(duì)于你來(lái)說(shuō)它就是透明的,不用去干預(yù),它就能正常的工作. 比如說(shuō), 你使用裝載器類加載了一個(gè)視圖文件, 這個(gè)視圖文件的內(nèi)容會(huì)自動(dòng)傳遞給輸出類對(duì)象, 然后呢,在方法執(zhí)行完畢后會(huì)自動(dòng)調(diào)用輸出類對(duì)象將執(zhí)行的結(jié)果輸出. 但是呢,實(shí)際開(kāi)發(fā)的過(guò)程當(dāng)中會(huì)遇見(jiàn)一些特殊的情況需要我們干預(yù)輸出,接管輸出的控制權(quán)(像是客戶要求將數(shù)據(jù)導(dǎo)出成Excel,提供下載),這種時(shí)候,下面的這些個(gè)方法就用啦:
$this->output->set_output();
告訴CodeIgniter方法執(zhí)行完畢后,用給定的數(shù)據(jù)做為輸出。例如:
$this->output->set_output($data);
重要:使用這個(gè)方法有一點(diǎn)很重要,就要將它放在最后一句,千萬(wàn)要注意啊,到時(shí)候出了錯(cuò),不要怪我沒(méi)提醒你.
$this->output->set_content_type();
允許你設(shè)置頁(yè)面的mime類型以便于輸出 JSON , JPEG, XML 等類型的數(shù)據(jù).
$this->output
????->set_content_type('application/json')
????->set_output(json_encode(array('foo' => 'bar')));
$this->output
????->set_content_type('jpeg') // 你也可以用".jpeg",它在查找 config/mimes.php 文件之前會(huì)移除句號(hào)
????->set_output(file_get_contents('files/something.jpg'));
重要: 確保你傳遞到此方法的非mime字符串在 config/mimes.php 存在,否則設(shè)置不起作用。
$this->output->get_output();
使用這個(gè)方法,你可以得到將要輸出的數(shù)據(jù),并把它保存起來(lái),留著它用(我們做新聞?lì)愋途W(wǎng)站的時(shí)候,常常需要生成靜態(tài)的HTML文件). 例如:
$string = $this->output->get_output();
注意,如果先前的數(shù)據(jù)已經(jīng)被一個(gè)類似 $this->load->view() 的 CodeIgniter 函數(shù)送到了輸出類,那么只能取得那個(gè)函數(shù)之后的輸出。
$this->output->append_output();
在輸出字符串后附加數(shù)據(jù)。例如:
$this->output->append_output($data);
$this->output->set_header();
使用此方法,允許你設(shè)置將會(huì)被發(fā)送到瀏覽器的HTTP協(xié)議的標(biāo)頭,作用相當(dāng)于php的標(biāo)準(zhǔn)函數(shù): header()。例如:
$this->output->set_header("HTTP/1.0 200 OK");
$this->output->set_header("HTTP/1.1 200 OK");
$this->output->set_header('Last-Modified: '.gmdate('D, d M Y H:i:s', $last_update).' GMT');
$this->output->set_header("Cache-Control: no-store, no-cache, must-revalidate");
$this->output->set_header("Cache-Control: post-check=0, pre-check=0");
$this->output->set_header("Pragma: no-cache");
$this->output->set_status_header(code, 'text');
允許你手動(dòng)設(shè)置服務(wù)器狀態(tài)頭(header)。例如:
$this->output->set_status_header('401');
// 將header設(shè)置為: Unauthorized
單擊這里查看全部的 header 列表。
$this->output->enable_profiler();
允許你開(kāi)啟或禁用評(píng)測(cè)器,評(píng)測(cè)器將在頁(yè)的底部顯示測(cè)試基準(zhǔn)點(diǎn)或調(diào)試、優(yōu)化需要的其他數(shù)據(jù)。
在控制器函數(shù)的任何位置放置以下函數(shù),可以開(kāi)啟控制器:
$this->output->enable_profiler(TRUE);
當(dāng)開(kāi)啟評(píng)測(cè)器功能,會(huì)在您的頁(yè)面底部生成一個(gè)報(bào)告。
你可以用以下語(yǔ)句禁用評(píng)測(cè)器:
$this->output->enable_profiler(FALSE);
$this->output->set_profiler_sections();
允許你在評(píng)測(cè)器啟用時(shí)控制(開(kāi)/關(guān))其特定部分。請(qǐng)參考評(píng)測(cè)器了解詳細(xì)信息。
$this->output->cache();
CodeIgniter的輸出類同樣也控制緩存。要獲取更多信息,請(qǐng)閱讀 緩存文檔.
Parsing Execution Variables
默認(rèn)情況下,CodeIgniter總會(huì)在輸出中解析偽變量{elapsed_time}和{memory_usage}。 如需禁用,在控制器中將類屬性$parse_exec_vars設(shè)為FALSE。
$this->output->parse_exec_vars = FALSE;
?