debug_zval_dump

(PHP 4 >= 4.2.0, PHP 5)

debug_zval_dumpExtrait une représentation sous forme de chaîne d'une valeur interne à Zend pour affichage

Description

void debug_zval_dump ( mixed $variable [, mixed $... ] )

Extrait une représentation sous forme de chaîne d'une valeur interne à Zend pour affichage.

Liste de paramètres

variable

La variable à évaluer.

Valeurs de retour

Aucune valeur n'est retournée.

Exemples

Exemple #1 Exemple avec debug_zval_dump()

<?php
$var1 = 'Bonjour le monde !';
$var2 = '';

$var2 =& $var1;

debug_zval_dump(&$var1);
?>
<?php
$var1 = 'Bonjour le monde !';
$var2 = '';

$var2 =& $var1;

debug_zval_dump($var1); // non passée par référence, cette fois-ci
?>
<?php
$var1 = 'Bonjour le monde !';

debug_zval_dump($var1);
?>

L'exemple ci-dessus va afficher :

string(18) "Bonjour le monde !" refcount(2)

Un refcount de 2, ici, est vraiment inattendu. Tout spécialement si on considère les exemples ci-dessus. Donc, que se passe-t-il ?

Lorsqu'une variable a une seule référence (faire $var1 avant qu'elle ne soit utilisée en tant qu'argument de la fonction debug_zval_dump()), le moteur PHP optimise la façon dont elle est passée à la fonction. En interne, PHP traite $var1 comme une référence (et donc, le refcount est incrémenté), et avec le cas où le passage par référence intervient, une copie est alors faite, mais uniquement au moment de l'écriture. Ceci est connu comme "la copie à l'écriture".

Donc, si debug_zval_dump() intervient pour écrire son unique paramètre (et il ne le fait pas), alors une copie est faite. Jusque-là, le paramètre demeure une référence, faisant que le refcount est incrémenté à 2 pour l'appel à la fonction.

Voir aussi

LoadingChargement en cours