本文和大家分享的主要是php開發(fā)中,調(diào)試的回溯跟蹤相關(guān)內(nèi)容,一起來看看吧,希望對大家學(xué)習(xí)和使用這部分內(nèi)容有所幫助。
前言
在我們調(diào)試程序過程中,往往可能會出現(xiàn)需要回溯跟蹤一個方法,這里我就介紹兩個比較不錯的PHP函數(shù),也是我經(jīng)常使用的。
內(nèi)容
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
debug_backtrace — 產(chǎn)生一條回溯跟蹤(backtrace)
(PHP 5, PHP 7)
debug_print_backtrace — 打印一條回溯。
這兩個看起來有點相似,其實功能也是差不多的,下面我就以一個簡單的例子向大家演示下他們的使用。
實例
<?php/**
* PHP回溯
* @author chenyanphp@qq.com
*/
header("Content-Type:text/html;charset=utf-8");
/**
*
* 調(diào)試函數(shù)
* @param $content
*/function dump($content){
echo '
';
var_dump($content);
echo '';
}
/**
* Class A
*/class A{
public function say()
{
// 這里打印回溯內(nèi)容
dump(debug_backtrace());
// 調(diào)用本身方法打印
debug_print_backtrace();
echo '
';
echo 'Hello World!';
}
}
/**
* Class B
*/class B{
public function sayB(A $obj)
{
$obj->say();
}
}
/**
* 測試結(jié)果
*/
$a = new A();
$b = new B();
$b->sayB($a);
下面是運行結(jié)果:
array(2) {
[0]=>
array(7) {
["file"]=>
string(29) "D:\phpStudy\WWW\test\test.php"
["line"]=>
int(43)
["function"]=>
string(3) "say"
["class"]=>
string(1) "A"
["object"]=>
object(A)#1 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(0) {
}
}
[1]=>
array(7) {
["file"]=>
string(29) "D:\phpStudy\WWW\test\test.php"
["line"]=>
int(52)
["function"]=>
string(4) "sayB"
["class"]=>
string(1) "B"
["object"]=>
object(B)#2 (0) {
}
["type"]=>
string(2) "->"
["args"]=>
array(1) {
[0]=>
object(A)#1 (0) {
}
}
}
}
#0 A->say() called at [D:\phpStudy\WWW\test\test.php:43] #1 B->sayB(A Object ()) called at [D:\phpStudy\WWW\test\test.php:52] Hello World!
結(jié)合代碼不難看出,他們著重返回結(jié)果集,拆分結(jié)構(gòu);另一個著重按調(diào)用順序打印出回溯跟蹤。
總結(jié)
內(nèi)容就這么多,結(jié)果一目了然,其他自己測試下就明了了。
PHP有些方法還是挺不錯的,大家平時可以多看看手冊。
下面放了他們兩的官方鏈接,有興趣的可以點擊詳細(xì)看看。
來源:SegmentFault