http://my.oschina.net/u/867608/blog/129125#OSC_h1_2
简述
可能大家都知道,php中有一个函数叫debug_backtrace,它可以回溯跟踪函数的调用信息,可以说是一个调试利器。
好,来复习一下。
01 | one(); |
02 |
03 | function one() { |
04 | two(); |
05 | } |
06 |
07 | function two() { |
08 | three(); |
09 | } |
10 |
11 | function three() { |
12 | print_r( debug_backtrace() ); |
13 | } |
14 |
15 | /* |
16 | 输出: |
17 | Array |
18 | ( |
19 | [0] => Array |
20 | ( |
21 | [file] => D:\apmserv\www\htdocs\test\debug\index.php |
22 | [line] => 10 |
23 | [function] => three |
24 | [args] => Array |
25 | ( |
26 | ) |
27 |
28 | ) |
29 |
30 | [1] => Array |
31 | ( |
32 | [file] => D:\apmserv\www\htdocs\test\debug\index.php |
33 | [line] => 6 |
34 | [function] => two |
35 | [args] => Array |
36 | ( |
37 | ) |
38 |
39 | ) |
40 |
41 | [2] => Array |
42 | ( |
43 | [file] => D:\apmserv\www\htdocs\test\debug\index.php |
44 | [line] => 3 |
45 | [function] => one |
46 | [args] => Array |
47 | ( |
48 | ) |
49 |
50 | ) |
51 |
52 | ) |
53 | */ |
顺便提一下类似的函数:debug_print_backtrace,与之不同的是它会直接打印回溯信息。
回来看debug_backtrace,从名字来看用途很明确,是让开发者用来调试的。直到有一天我注意到它返回的file参数,file表示函数或者方法的调用脚本来源(在哪个脚本文件使用的)。忽然我想到,如果当前脚本知道调用来源,那是否可以根据这个来源的不同,来实现一些有趣的功能,比如文件权限管理、动态加载等。