On Sat, 27 Feb 2021 at 14:00, Rowan Tommins <rowan.coll...@gmail.com> wrote:
> Hi all, > > I would like to propose we formally deprecate the function debug_zval_dump > and remove it in PHP 9.0. > > This function is mostly similar to var_dump, with the additional ability > to output the refcount of a variable. This has always been hard to > interpret, but is now so complex as to be effectively useless: > > - Because it is implemented as a function taking a parameter in the normal > way, the refcount has been modified by the time it is displayed. Depending > on the value passed, this may include reference separation; in older > versions of PHP, it was possible to affect this directly by forcing a > pass-by-reference. The manual still discusses this, but it hasn't been > possible since PHP 5.4. [1] > - Since PHP 7, some types don't have a refcount at all, and references are > represented by additional levels of zval. Without completely changing the > output format, this information is impossible to convey accurately. > - Optimisations affect the refcount in increasingly non-obvious ways. For > instance, an array defined literally in the source code has an extra > counted reference compared to one which has been modified at runtime. [2] > > Since this is a rather specialised piece of debugging information, not > useful to the average user, I think it should be left to dedicated > debugging tools. XDebug includes an equivalent function that takes a name > and looks it up in the symbol table, avoiding some of the worst issues [3]. > I'm not familiar with PHPDBG, and it doesn't seem to have much > documentation, but I assume it would be able to display this as well. > > I notice there's a draft for an omnibus "deprecations for PHP 8.1" RFC > [4]. Should I add this there, or raise a separate RFC? > > Refs: > 1: https://www.php.net/debug-zval-dump > 2: https://3v4l.org/DVi3f > 3: https://xdebug.org/docs/all_functions#xdebug_debug_zval > 4: https://wiki.php.net/rfc/deprecations_php_8_1 > > Regards, > -- > Rowan Tommins > [IMSoP] I would say adding this to the omnibus RFC and adding yourself as an author to it would be the easiest and simplest way. Except if people feel strongly about this function and want it to be voted separately (which I doubt). Best regards, George P. Banyard