phpの内部変数を確認するメソッド

phpの組み込み関数

void debug_zval_dump ( mixed $variable )

Xdebugの関数

void xdebug_debug_zval( [string varname [, ...]] )

どうも、debug_zval_dump()の方は、refcountが微妙に参考にしにくい仕様みたいです。

$var = 'foo';
debug_zval_dump($var);
debug_zval_dump(&$var);

この様にdebug_zval_dump()をcallした際にも、$varのrefcountが変化するみたいです。
じゃぁrefcountを常に-1すればいいのかというと、そうではないようです。
詳しくは公式マニュアルの「注意: refcount に注意」に書いてあります。


というわけで、zvalの確認に関しては、Xdebugを使ったほうがよさそうです。
xdebug_debug_zval()でのrefcountが変化するかは、まだ確認していませんが、is_refが見れるので何とかなりそう。
一度、実験して比較してみたいところです。

参考

PHPでの内部変数の扱われ方 - PHP5のオブジェクトコピーでありがちな勘違い - PHPプロ!ニュース
内部変数やzvalやrefcountやis_refがなんだか分かる資料です。
Xdebug: Documentation
xdebug_debug_zval()のドキュメント