`xdebug_debug_zval`の出力がよくわからない
解決したいこと
xdebug_debug_zvalを使用したコードの出力について、自分の理解が正しいのか第三者に伺いたい。
PHP8で
$i = 1;
xdebug_debug_zval('i');
$i2 = $i;
xdebug_debug_zval('i');
$i3 = &$i;
xdebug_debug_zval('i');
を実行したら、以下の結果になと思う:
i: (refcount=1, is_ref=0)=1
i: (refcount=2, is_ref=0)=1
i: (refcount=2, is_ref=1)=1
(理由)
$i = 1;より変数コンテナが作成される。
一回目のxdebug_debug_zval:
上記のコンテナを指すシンボルは$iのなのでrefcountは1
二回目のxdebug_debug_zval:
上記のコンテナを指すシンボルは$i2と$iの二つなので、
refcountは2
三回目のxdebug_debug_zval:
$i3 = &$i;という参照代入よりis_refが1増える。参照代入でrefcountは増えないので2のまま
0 likes