debug_zval_dump Extrait une représentation sous forme de chaîne de la structure interne d'une zval pour affichage &reftitle.description; voiddebug_zval_dump mixedvalue mixedvalues Extrait une représentation sous forme de chaîne de caractère d'un structure interne d'une zval (Zend value) pour affichage. Ceci est généralement utile pour comprendre ou déboguer les détails d'implémentation du moteur Zend ou d'extensions PHP. &reftitle.parameters; value La variable où valeur à extraire. values Variables ou valeurs supplémentaire à extraire. &reftitle.returnvalues; &return.void; &reftitle.examples; Exemple avec <function>debug_zval_dump</function> ]]> &example.outputs; Comprendre le <literal>refcount</literal> La valeur refcount affiché par cette fonction peut être surprenant sans une compréhension détaillé de l'implémentation du moteur. Le moteur Zend utilise le comptage de référence pour deux raisons différentes : Optimiser l'usage de mémoire en utilisant une technique appelé "copy on write", où plusieurs variables tenant la même valeur pointe à la même copie en mémoire. Quand une de ces variables est modifié, elle pointe à une nouvelle copie en mémoire, et le comptage de référence de l'originale est réduit de 1. Le pistage des variables qui ont été assigné ou passé par référence (voir Références Expliquer). Ce refcount est stocker dans un zval de référence séparé, pointant à la zval pour la valeur actuelle. Cette zval additionnelle n'est actuellement pas montré par debug_zval_dump. Car debug_zval_dump prend son entrée comme un paramètre normal, passé par valeur, la technique de copy on write sera utilisé pour la passé: au lieu de copier les données, le refcount sera incrémenté de 1 pour la durée de vie de l'appel de la fonction. Si la fonction modifie le paramètre après l'avoir reçu, alors une copie sera fait ; comme elle n'en fait pas, elle affichera un refcount de 1 plus élevé que dans la portée d'appel. Le passage de paramètre empêche aussi debug_zval_dump de montrer les variables qui ont été assigné par référence. Pour illustrer ceci, considérons une version légèrement modifié de l'exemple ci-dessus : showing variables which have been assigned by reference. To illustrate, consider a slightly modified version of the above example: <programlisting role="php"> <![CDATA[ <?php $var1 = 'Hello'; $var1 .= ' World'; // Point three variables as references to the same value $var2 =& $var1; $var3 =& $var1; debug_zval_dump($var1); ?> ]]> </programlisting> &example.outputs; <screen> <![CDATA[ string(11) "Hello World" refcount(2) ]]> </screen> </example> </para> <para> Bien que <varname>$var1</varname>, <varname>$var2</varname>, et <varname>$var3</varname> sont lié en tant que référence, seul la <emphasis>valeur</emphasis> est passé à <function>debug_zval_dump</function>. Cette valeur est utilisé une seul fois par le jeu de références, et une fois à l'intérieur de <function>debug_zval_dump</function>, ainsi il affiche un refcount de 2. </para> <para> Des complications supplémentaire émergent à cause des optimisations effectué par le moteur pour différent types de données. Certains types tel que les entiers n'utilise pas "copy on write", et donc n'affiche aucun refcount. Dans d'autre cas, le refcount montre d'autres copies utilisé en interne, tel que quand une chaîne littérale ou tableau est stocké comme une partie d'une instruction de code </para> </note> </refsect1> <refsect1 role="seealso"> &reftitle.seealso; <para> <simplelist> <member><function>var_dump</function></member> <member><function>debug_backtrace</function></member> <member><link linkend="language.references">Explication sur les références</link></member> <member><link xlink:href="&url.derick.references;">Explication sur les références (par Derick Rethans)</link></member> </simplelist> </para> </refsect1> </refentry> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"~/.phpdoc/manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->