Почему рефконт 3, а не 2? - PullRequest
0 голосов
/ 02 июля 2018
function A($a) {
    xdebug_debug_zval('a');
}
$a = 1; # refcount->1
A($a); # refcount->2

Комментарий - это то, что я считаю рефконтом.

но вывод:

a: (refcount = 3, is_ref = 0) = 1

откуда берется 1 дополнительный счет?

1 Ответ

0 голосов
/ 03 июля 2018

В документации PHP описано, что вы должны передавать аргумент по ссылке. Но передача аргументов по ссылке была удалена в PHP 5.x. Эта проблема приводит нас к не функции debug_zval_dump. С помощью этой функции невозможно получить правильный счет.

Полагаю, не рекомендуется использовать эту функцию для подсчета ссылок. В моей тестовой среде (Apache / PHP7.1) ваш пример выдает повторный счет 1. Кажется, что это немного сложно.

...