#6238 [Ana->WFx]: var_dump() param for deactivating reference following

From: Date: Sat, 17 Jan 2004 14:35:09 +0000
Subject: #6238 [Ana->WFx]: var_dump() param for deactivating reference following
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-53483@lists.php.net to get a copy of this message
ID: 6238 Updated by: andrey@php.net Reported By: waldschrott@php.net -Status: Analyzed +Status: Wont fix Bug Type: Feature/Change Request Operating System: * PHP Version: 4.0 Latest CVS (18/08/2000) New Comment: var_dump() cannot be extended in such a way since it currently dumps the every value passed to it. Thefefore it will break BC. var_dump() currently works better with circular references than before - does not crash. Previous Comments: ------------------------------------------------------------------------ [2000-08-18 12:40:03] waldschrott@php.net If someone takes the task designing a new svar_dump() or similar (custom_dump()), we could add two parameters. param 1) steps, how many steps to resolve, unset=all (as it is currently),1=one level, 2=two levels etc. we would catch the issue that var_dump() produces never ending output with that too, but It´ll be even better to have both, thus... param 2) do not resolve references That´s significant added value and could make debugging a lot easier.... example step=2,no_resolve=TRUE object(a)(3) { ["a"]=> int(0) ["b"]=> array(3) { ["a"]=> array(24) ["b"]=> array(14) ["a"]=> array(7) } ["c"]=> &object(circular) (20) } // "c" does not get expanded, because of no_resolve... example step=1,no_resolve=FALSE object(a)(3) { ["a"] int(0) ["b"]=> array(3) ["c"]=> &object(circular) (1) { ["x"] => &object(a) (3) } } example step=0,no_resolve=TRUE // no resolve doesn´t matter here object(a)(3) { ["a"] int(0) ["b"]=> array(3) ["c"]=> &object(circular) (1) } Please comment, If anything thinks that´s a good/bad idea... ------------------------------------------------------------------------ [2000-08-18 11:29:39] waldschrott@php.net maybe I was too fast... get_object_vars() of course works with circular references, but again var_dump()ing them does not work, it has nothing to do with get_object_vars()... ------------------------------------------------------------------------ [2000-08-18 11:27:06] waldschrott@php.net hah, just found out that get_object_vars() doesn´t work with circular references too... very bad summary, using circular references very much makes scripts very hard (impossible) to debug because of this bug. You´ll have to kill all circular references to be able to debug objects, depending on number of CRs it´s perhaps no trivial task cos there´s no function like get_object_references() to be able to kill them so var_dump() supports multiple variables, then perhaps svar_dump() for safe var dump or any other name maybe get_object_vars() can get this second SAFETY parameter.... ------------------------------------------------------------------------ [2000-08-18 11:11:45] waldschrott@php.net of course, deactivation with an optinal parameter, like var_dump($megaobject,TRUE); ------------------------------------------------------------------------ [2000-08-18 11:06:41] waldschrott@php.net It would be very, very helpful if we could *disable* reference resolution in var_dump() output, working with circular references and then trying a var_dump() on any involved object results in a really big mess, I killed my browser after it grew up to 250Megs. It´s really handy that var_dump() recognizes if it´s a variable or not (by prepending &) and I can imagine that profit supercedes the efforts to implement this greatly. that applies to print_r() and similar functions too ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=6238&edit=1

« previous php.bugs (#53483) next »