你能给我举个例子说明如何使用zval容器吗?我知道的唯一相关函数是debug_zval_dump
,但我从未真正使用过它。
编辑:
我想,跟踪zval容器,我可以看到如何优化代码,看看内存是如何被引用的。在某些情况下,它可能是有用的工具。当然有一些很好的理由可以证明debug_val_dump
函数的存在。
最佳答案
每个php变量都存储在zval
中,因此您会发现您的问题实际上没有意义。debug_val_dump
不是一个经过深思熟虑的函数,因为它很难解释。只需向函数传递一个变量,就可以更改zval的引用计数。如果传递一个引用到debug val_dump而不通过引用传递,则将强制执行zval分离,并始终返回一个引用计数为1且引用标志清除的zval,如果通过引用传递(必须在调用时完成,如果你不知道它是最初的引用,那么你就不能通过输出来判断。
xdebug有一个更有用的函数,不传递变量,而是以字符串形式传递其名称。它叫做xdebug_debug_zval
。
除非您正在调试使用引用的代码,并且希望知道有多少变量属于引用集,否则这些函数可能对您不是很有用。
为了理解它们,我建议您阅读手册中的reference count basics。