所以我有一段很长的 PHP 代码,它使用循环/if 语句修改全局数组。
是否有任何直接的方法可以在每次更改时打印数组的值?也许使用 XDebug?
我更喜欢文本日志,而不是使用 XDebug 进行逐行调试。
好吧,通过输出 JS 来实现它的一种方法:安装 Firebug,然后您可以使用console.log(...)
andconsole.debug(...)
等(请参阅文档)。
Xdebug 支持函数跟踪,它将每个函数调用转储到磁盘上的文件中(参见http://xdebug.org/docs/execution_trace)。从最近的版本开始,函数跟踪也可以配置为显示对变量的更改。您可以使用 xdebug.collect_assignment 设置打开它(参见:http: //xdebug.org/docs/execution_trace#collect_assignments)。
如果没有 xdebug,您可能必须定义一个自定义对象(实现ArrayAccess
)而不是数组,然后登录offsetSet
,快速模拟开始:
class ArrayLogger implements ArrayAccess {
protected $array;
public function __construct(array $array){
$this->array = $array;
}
public function offsetGet($idx){
return $this->array[$idx];
}
public function offsetExists($offset) {
return isset($this->array[$offset]);
}
public function offsetUnset($offset) {
unset($this->array[$offset]);
}
public function offsetSet($offset,$value){
//do some logging here
debug_print_backtrace();
var_dump($this->array,$offset,$value)
//and actually, you may need to inspect $value for arrays. & convert them all to ArrayLogger's before setting this:
$this->array[$offset] = $value;
}
}