Я использую MVC framework 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());
Он не работает с print_r()
, var_dump()
или var_export()
. Сообщение об ошибке:
PHP Неустранимая ошибка: допустимый размер памяти 134217728 байт исчерпан (пытался выделить 523800 байт) в print_r_test.php в строке 10