#6238 [Ana->WFx]: var_dump() param for deactivating reference following
| From: | andrey@php.net | 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