Constantes pré-définies
<<<
debug_zval_dump doubleval
>>>

6.38 Fonctions de gestion des variables
6 Référence des fonctions
 Manuel PHP

Introduction
Pré-requis
Installation
Configuration à l'exécution
Types de ressources
Constantes pré-définies
->debug_zval_dump
doubleval
empty
floatval
get_defined_vars
get_resource_type
gettype
import_request_variables
intval
is_array
is_bool
is_callable
is_double
is_float
is_int
is_integer
is_long
is_null
is_numeric
is_object
is_real
is_resource
is_scalar
is_string
isset
print_r
serialize
settype
strval
unserialize
unset
var_dump
var_export

6.38.7 debug_zval_dump()Extrait une représentation sous forme de chaîne d'une valeur interne à Zend pour affichage

[ Exemples avec debug_zval_dump ]   PHP 4 >= 4.2.0, PHP 5

void  debug_zval_dump ( mixed   variable )

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

    variable
    La variable à évaluer.

Aucune valeur n'est retournée.

Exemple avec debug_zval_dump

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

$var2 =& $var1;

debug_zval_dump(&$var1);
?>

Note
Faîte attention avec refcount

La valeur refcount retournée par cette fonction n'est pas significative dans certaines circonstances. Par exemple, un développeur peut s'attendre avec l'exemple ci-dessus d'avoir un refcount de 2 . La troisième référence est créée lors de l'appel à la fonction debug_zval_dump .

Ce comportement est encore plus fin lorsqu'une variable n'est pas passée par référence à la fonction debug_zval_dump . Pour illustrer ceci, voici une version modifiée de l'exemple ci-dessus :


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

$var2 =& $var1;

debug_zval_dump($var1); // non passé par référence, cette fois-ci
?>

Pourquoi refcount(1) ? Parcequ'une copie de $var1 a été faite, lors de l'appel de la fonction.

Cette fonction devient encore plus confuse lorsqu'une variable avec un refcount de 1 est passée (par copie/valeur) :


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

debug_zval_dump($var1);
?>

Un refcount de 2 , ici, est vraiment innatendu. 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é en tant qu'argument à 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.

<< debug_zval_dump >>
Constantes pré-définies Fonctions de gestion des variables doubleval