我正在使用CodeIgniter中的PHPUnit,并创建了一个支持方法,允许我将输出动态转储到以调用函数命名的文件,文件存储在与调用文件路径相同的目录树中。
该函数运行良好(从CIUnit_TestCase中实现),并且当前被调用:
$this->dumpOutputToFile($out, __FILE__, __CLASS__, __FUNCTION__);
我宁愿按照
的方式做点什么$this->dumpOutputToFile($out);
甚至(虽然仍然有些hacky)
$this->dumpOutputToFile($out, $this);
问题是在“dumpOutputToFile()”方法中魔术宏不再存在(当然)并且遗憾的是使用debug_backtrace()没有任何帮助,因为从返回的值内部不包括'文件'或'line'属性(虽然它们在通话之外可用。)
所以我正在寻找最干净/最简单的方法来实现对dumpOutputToFile()的调用,只需使用少量参数等。
宏可以没问题,但那些不可用。使用debug_backtrace会没问题但是它没有从内部提供正确的信息。我也听说过XDebug的事情让我对这些问题更加简单,但我还没有带宽来安装它。
以下是我在函数内部使用的代码示例:
$myDbg = debug_backtrace();
print "Printing array keys 'inside' ({$myDbg[0]['function']}) function:\n";
print_r(array_keys($myDbg['0']));
print "\n\nPrinting array keys to 'parent' ({$myDbg[1]['function']}) function:\n";
print_r(array_keys($myDbg['1']));
我得到的结果......我想要的值不适用于调用函数:
Printing array keys 'inside' (dumpOutputToFile) function:
Array
(
[0] => file
[1] => line
[2] => function
[3] => class
[4] => object
[5] => type
[6] => args
)
Printing array keys to 'parent' (testIndex) function:
Array
(
[0] => function
[1] => class
[2] => object
[3] => type
[4] => args
)