j'ai lu beaucoup d'articles sur la façon de construire les variables à l'intérieur de la machine Zend et a trouvé une chose intéressante que je ne peux pas expliquer:La variable fait référence à lui-même
$int = 100;
xdebug_debug_zval('int'); /// int:(refcount=1,is_ref=0),int 100
$int = &$int;
xdebug_debug_zval('int'); /// int:(refcount=1,is_ref=1),int 100
Comme il se avère que nous créons le lien lui-même à lui-même? Comment est-ce possible?
information claire de ce que je sais:
En règle générale is_ref = 1
que lorsque le conteneur se réfère zval deux ou plusieurs variables de lien dur. - le nombre de variables se réfère au même conteneur zval, mais la différence est que le compteur pour différents travaux avec is_ref = 0
et is_ref = 1
. Lors de la création de liens durs, nous obtenons un nouveau conteneur zval, si nous faisons l'affectation par une valeur - un nouveau conteneur zval ne sera pas créé.
Si is_ref = 1
, et refcount > 1
lors de la création de liens physiques, zval n'est pas créé, utilisé ancien. si nous ne créons pas un lien dur, mais que nous assignons une valeur - cela signifie ce que nous avons créé nouveau conteneur zval.
PS J'ai écrit ceci afin de montrer que comprendre que je demande dans les commentaires et montrer pourquoi je ne comprends pas le comportement du code que je l'ai écrit ci-dessus
@RyanVincent Est-ce possible? Comment est-ce que je peux faire un lien dur à la même variable, c'est à dire lui-même – MaximPro
@RyanVincent Je ne te comprends pas. Je sais ce qu'une variable possède un conteneur zval – MaximPro
peut-être intéressant? [Les références PHP5 expliquées visuellement] (http://www.phpinsider.com/download/PHP5RefsExplained.pdf). Plus tard et plus facile à comprendre. –