ID:               6238
 Updated by:       [EMAIL PROTECTED]
 Reported By:      [EMAIL PROTECTED]
-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] [EMAIL PROTECTED]

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] [EMAIL PROTECTED]

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] [EMAIL PROTECTED]

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] [EMAIL PROTECTED]

of course, deactivation with an optinal parameter,
like
var_dump($megaobject,TRUE);

------------------------------------------------------------------------

[2000-08-18 11:06:41] [EMAIL PROTECTED]

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

Reply via email to