W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
盡管使用在調(diào)試你的應(yīng)用程序時(shí), XDebug 以及一個(gè)優(yōu)秀的 IDE 是不可或缺的,有時(shí)候一個(gè)簡(jiǎn)單的 var_dump()
就是你所需要的。 CodeIgniter 通過(guò)集成了優(yōu)秀的 Kint 調(diào)試工具來(lái)將這一過(guò)程更為優(yōu)化。 該功能比你常用的工具更為方便,可以提供多種類(lèi)型的可選數(shù)據(jù),類(lèi)似于時(shí)間戳格式化,以顏色的方式展示十六進(jìn)制碼,以便于閱讀的方式輸出數(shù)組數(shù)據(jù)等等等。
默認(rèn)情況下,Kint 僅在 development and testing 環(huán)境中啟用(開(kāi)發(fā)和測(cè)試中)。該操作可以通過(guò)環(huán)境配置這節(jié)中所述的,修改主 index.php 文件中的 $useKint
值來(lái)實(shí)現(xiàn):
$useKint = true;
d()
d()
方法用于輸出所有其所接受的所有參數(shù),并將其輸出到屏幕上,并允許腳本繼續(xù)執(zhí)行:
d($_SERVER);
dd()
與 d()
等同,除了該方法同時(shí)會(huì)執(zhí)行 dies()
,導(dǎo)致該請(qǐng)求的后續(xù)代碼無(wú)法執(zhí)行。
trace()
該方法會(huì)對(duì)于當(dāng)前執(zhí)行點(diǎn)提供一個(gè)調(diào)用棧。以 Kint 獨(dú)有的方式:
trace();
更多信息請(qǐng)參閱 Kint 主頁(yè).
調(diào)試工具條提供了對(duì)于當(dāng)前頁(yè)面請(qǐng)求的快照信息,包括性能測(cè)試結(jié)果,運(yùn)行的語(yǔ)句,請(qǐng)求和響應(yīng)數(shù)據(jù)等。 而這些都在開(kāi)發(fā)實(shí)踐中證明了其在調(diào)試和優(yōu)化過(guò)程中的實(shí)用性。
注解
調(diào)試工具條仍處于構(gòu)建中,并遺留著幾個(gè)日后計(jì)劃實(shí)現(xiàn)的特性功能
工具條在 除了 生產(chǎn)環(huán)境之外的其他環(huán)境中默認(rèn)啟用。該功能會(huì)在 CI_DEBUG 這個(gè)常量被定義且值為正數(shù)時(shí)顯示。 這一常量在啟用文件(例如 app/Config/Boot/development.php
中)定義,并可被修改并決定該功能用于哪個(gè)環(huán)境。
工具條本身作為一個(gè) 后置過(guò)濾器 所展示。你可以通過(guò)將其從app/Config/Filters.php文件的 $globals
屬性中移除的方式來(lái)將其停用。
CodeIgniter 中裝載了多個(gè)收集器,正如其名所示,用于收集數(shù)據(jù)并顯示于工具條中。 你可以創(chuàng)建自己的收集器來(lái)定制化工具條。為了決定哪些收集器顯示,我們又回到 app/Config/Toolbar.php 這一配置文件:
public $collectors = [
\CodeIgniter\Debug\Toolbar\Collectors\Timers::class,
\CodeIgniter\Debug\Toolbar\Collectors\Database::class,
\CodeIgniter\Debug\Toolbar\Collectors\Logs::class,
\CodeIgniter\Debug\Toolbar\Collectors\Views::class,
\CodeIgniter\Debug\Toolbar\Collectors\Cache::class,
\CodeIgniter\Debug\Toolbar\Collectors\Files::class,
\CodeIgniter\Debug\Toolbar\Collectors\Routes::class,
\CodeIgniter\Debug\Toolbar\Collectors\Events::class,
];
將你不期望顯示的收集器注釋掉。并通過(guò)增加完全命名空間化的類(lèi)名來(lái)增加自定義收集器。 這里給定的收集器將影響哪些區(qū)塊將會(huì)顯示,以及哪些信息將會(huì)在時(shí)間線(xiàn)上呈現(xiàn)
注解
某些區(qū)塊,例如數(shù)據(jù)庫(kù)和日志,將會(huì)僅在含有內(nèi)容時(shí)展示。否則將會(huì)被移除以節(jié)省顯示空間。
CodeIgniter 裝載的控制器為:
為了使性能測(cè)試器可以收集并展示性能測(cè)試數(shù)據(jù),你必須使用特定的語(yǔ)法來(lái)標(biāo)記測(cè)試點(diǎn)。
請(qǐng)閱讀以下信息以設(shè)置性能測(cè)試基點(diǎn) 基準(zhǔn)測(cè)試類(lèi)
創(chuàng)建自定義收集器是一件簡(jiǎn)單直接的事情。你可以創(chuàng)建一個(gè)完全命名空間標(biāo)識(shí)的類(lèi),并繼承 CodeIgniter\Debug\Toolbar\Collectors\BaseCollector
,從而自動(dòng)加載器可以將其定位。 該類(lèi)提供了許多你可以用于重載的方法,并含有四個(gè)需要設(shè)置的屬性,來(lái)幫助你決定如何使用收集器:
<?php namespace MyNamespace;
use CodeIgniter\Debug\Toolbar\Collectors\BaseCollector;
class MyCollector extends BaseCollector
{
protected $hasTimeline = false;
protected $hasTabContent = false;
protected $hasVarData = false;
protected $title = '';
}
$hasTimeline 對(duì)于任何想要在工具條的時(shí)間線(xiàn)上顯示信息的收集器來(lái)說(shuō),該屬性應(yīng)該被設(shè)置為 true
。如果該屬性為 true 的話(huà),你需要實(shí)現(xiàn) formatTimelineData()
方法以格式化并返回需要顯示的數(shù)據(jù)。
$hasTabContent 對(duì)于任何想要擁有自定義標(biāo)簽的收集器來(lái)說(shuō),該屬性應(yīng)該被設(shè)置為 true
。如果該屬性為 true 的話(huà),你需要提供 $title
值,并實(shí)現(xiàn) display()
方法以渲染標(biāo)簽頁(yè)內(nèi)容。 如果你需要在標(biāo)簽標(biāo)題右側(cè)顯示額外的信息的話(huà),需要實(shí)現(xiàn) getTitleDetails()
方法。
$hasVarData 如果該收集器需要為 變量
標(biāo)簽頁(yè)增加額外數(shù)據(jù)的話(huà),該值應(yīng)被設(shè)為 true
。如果該值為 true ,你需要實(shí)現(xiàn) getVarData()
方法。
$title 在展開(kāi)的標(biāo)簽頁(yè)上顯示
為了顯示一個(gè)工具條標(biāo)簽,你必須:
$title
.$hasTabContent
屬性設(shè)置為 true
.display()
方法.getTitleDetails()
方法.
display()
方法創(chuàng)建了標(biāo)簽內(nèi)部顯示的HTML內(nèi)容。由于標(biāo)簽的標(biāo)題會(huì)自動(dòng)交由工具條來(lái)處理,因此該方法不會(huì)影響它。這一方法會(huì)返回一個(gè) HTML 字符串。
getTitleDetails()
方法會(huì)返回一個(gè)用于顯示在標(biāo)簽頁(yè)標(biāo)題右側(cè)的字符串,該方法可用于更多額外的概覽信息。 例如,在數(shù)據(jù)庫(kù)標(biāo)簽頁(yè)上顯示所有連接所執(zhí)行的查詢(xún)數(shù),以及在文件標(biāo)簽頁(yè)上顯示打開(kāi)的文件總個(gè)數(shù)等。
為了提供在時(shí)間線(xiàn)上展示的數(shù)據(jù),你必須:
$hasTimeline
變量設(shè)為 true
.formatTimelineData()
方法.
formatTimelineData()
方法必須返回一個(gè)以時(shí)間線(xiàn)可用的格式的數(shù)組,其中以正確的方式排序并返回正確的信息。內(nèi)層數(shù)據(jù)必須包含以下信息:
$data[] = [
'name' => '', // 在時(shí)間線(xiàn)左側(cè)顯示的名字
'component' => '', // 在時(shí)間線(xiàn)中間列出的部件名
'start' => 0.00, // 開(kāi)始時(shí)間,例如 microtime(true)
'duration' => 0.00 // 持續(xù)時(shí)間,例如 mircrotime(true) - microtime(true)
];
為了將數(shù)據(jù)加入到變量標(biāo)簽頁(yè)中,你必須:
$hasVarData
變量設(shè)為 true
getVarData()
方法。
getVarData()
方法應(yīng)當(dāng)返回一個(gè)需要顯示的以鍵值對(duì)格式的數(shù)組 外層數(shù)組的鍵為變量標(biāo)簽頁(yè)的標(biāo)簽名:
$data = [
'section 1' => [
'foo' => 'bar',
'bar' => 'baz'
],
'section 2' => [
'foo' => 'bar',
'bar' => 'baz'
]
];
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: