我正在使用MVC框架Symfony,似乎我想调试的很多内置对象都有循环引用.这使得无法使用print_r()或打印变量var_dump()(因为它们无限制地遵循循环引用或直到进程耗尽内存,以先到者为准).
而不是print_r用一些智能编写我自己的克隆,那里有更好的替代品吗?我只希望能够将变量(对象,数组或标量)打印到日志文件,http标头或网页本身.
编辑:要澄清问题所在,请尝试以下代码:
<?php
class A
{
public $b;
public $c;
public function __construct()
{
$this->b = new B();
$this->c = new C();
}
}
class B
{
public $a;
public function __construct()
{
$this->a = new A();
}
}
class C
{
}
ini_set('memory_limit', '128M');
set_time_limit(5);
print_r(new A());
#var_dump(new A());
#var_export(new A());
Run Code Online (Sandbox Code Playgroud)
它无法使用print_r(),var_dump()或var_export().错误消息是:
PHP致命错误:第10行的print_r_test.php中允许的内存大小为134217728字节(尝试分配523800字节)