如何在PHP中使用zval?

tak*_*hin 3 php variables

您能否建议我展示如何使用zval容器的任何实际示例?我所知道的唯一相关功能是debug_zval_dump,但我从未真正使用它.

编辑:

我想,跟踪zval容器我可以看到如何优化代码,看看引用如何使用内存.在某些情况下,它似乎可能是有用的工具.当然debug_val_dump存在功能存在的一些很好的理由.

Art*_*cto 11

每个PHP变量都存储在一个,zval所以你看到你的问题没有意义.

debug_val_dump不是一个经过深思熟虑的功能,因为它很难解释.通过简单地将变量传递给函数,您将更改zval的引用计数.如果您通过引用传递对debug_val_dump的引用,那么您将强制执行zval分离,并且您将始终返回带引用计数1的zval,其中引用标记为clear,如果您通过引用传递它(必须是完成了呼叫时间,这是不推荐使用的)然后你只能通过输出来判断它是否最初是一个引用.

Xdebug有一个更有用的功能,你不传递变量,而是在字符串中传递它的名字.它被称为xdebug_debug_zval.

除非您正在调试使用引用的代码,并且您想知道有多少变量属于引用集,否则这些函数对您来说可能不是很有用.

为了解它们,我建议您阅读手册中的参考计数基础知识.

  • "除非......"是我感兴趣的.我发现这篇文章也非常有用:http://derickrethans.nl/talks/phparch-php-variables-article.pdf (3认同)