Files
doc-fr/reference/var/functions/debug-zval-dump.xml
2021-09-24 04:13:47 +01:00

196 lines
6.4 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: d08d2e887fdc229f16748df96450c9b68c9a3076 Maintainer: yannick Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.debug-zval-dump" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>debug_zval_dump</refname>
<refpurpose>Extrait une représentation sous forme de chaîne de la structure interne d'une zval
pour affichage</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>void</type><methodname>debug_zval_dump</methodname>
<methodparam><type>mixed</type><parameter>value</parameter></methodparam>
<methodparam rep="repeat"><type>mixed</type><parameter>values</parameter></methodparam>
</methodsynopsis>
<para>
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.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>value</parameter></term>
<listitem>
<para>
La variable où valeur à extraire.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>values</parameter></term>
<listitem>
<para>
Variables ou valeurs supplémentaire à extraire.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.void;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Exemple avec <function>debug_zval_dump</function></title>
<programlisting role="php">
<![CDATA[
<?php
$var1 = 'Hello';
$var1 .= ' World';
$var2 = $var1;
debug_zval_dump($var1);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
string(11) "Hello World" refcount(3)
]]>
</screen>
</example>
</para>
<note>
<title>Comprendre le <literal>refcount</literal></title>
<para>
La valeur <literal>refcount</literal> affiché par cette fonction peut être
surprenant sans une compréhension détaillé de l'implémentation du moteur.
</para>
<para>
Le moteur Zend utilise le comptage de référence pour deux raisons
différentes :
</para>
<para>
<simplelist>
<member>
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.
</member>
<member>
Le pistage des variables qui ont été assigné ou passé par référence (voir
<link linkend="language.references">Références Expliquer</link>). 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 <function>debug_zval_dump</function>.
</member>
</simplelist>
</para>
<para>
Car <function>debug_zval_dump</function> 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.
</para>
<para>
Le passage de paramètre empêche aussi <function>debug_zval_dump</function>
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:
</para>
<para>
<example>
<title/>
<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
-->