com doc/fr: Apply commit d08d2e887fdc229f16748df96450c9b68c9a3076: reference/var/functions/debug-zval-dump.xml
[email protected] (George Peter Banyard) Wed, 03 Mar 2021 17:52:14 +0000
| Newsgroups | php.doc.fr |
|---|---|
| Message-ID | <[email protected]> |
Commit: a515d3e6e98b23ba3c9b39e4d187d2dae64ddee1 Author: George Peter Banyard <[email protected]> Wed, 3 Mar 2021 17:52:14 +0000 Parents: b9844c0f9dbe31a7908d1dc8d83949b45c12ec01 Branches: master Link: http://git.php.net/?p=doc/fr.git;a=commitdiff;h=a515d3e6e98b23ba3c9b39e4d187d2dae64ddee1 Log: Apply commit d08d2e887fdc229f16748df96450c9b68c9a3076 Rewrite debug_zval_dump manual based on current (>=7.0) behaviour Changed paths: M reference/var/functions/debug-zval-dump.xml
diff_a515d3e6e98b23ba3c9b39e4d187d2dae64ddee1.txt
(text/plain, 8.5 KB)
diff --git a/reference/var/functions/debug-zval-dump.xml b/reference/var/functions/debug-zval-dump.xml
index d4913e1190..61295aa5b0 100644
--- a/reference/var/functions/debug-zval-dump.xml
+++ b/reference/var/functions/debug-zval-dump.xml
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
-<!-- EN-Revision: 0c9c2dd669fe9395eaa73d487fbd160f9057429a Maintainer: yannick Status: ready -->
-<!-- Reviewed: yes -->
-
+<!-- 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 d'une valeur interne à Zend
+ <refpurpose>Extrait une représentation sous forme de chaîne de la structure interne d'une zval
pour affichage</refpurpose>
</refnamediv>
<refsect1 role="description">
@@ -17,8 +16,10 @@
<methodparam rep="repeat"><type>mixed</type><parameter>values</parameter></methodparam>
</methodsynopsis>
<para>
- Extrait une représentation sous forme de chaîne
- d'une valeur interne à Zend pour affichage.
+ 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">
@@ -29,7 +30,7 @@
<term><parameter>value</parameter></term>
<listitem>
<para>
- La variable à afficher.
+ La variable où valeur à extraire.
</para>
</listitem>
</varlistentry>
@@ -37,7 +38,7 @@
<term><parameter>values</parameter></term>
<listitem>
<para>
- Variables supplémentaire à afficher.
+ Variables ou valeurs supplémentaire à extraire.
</para>
</listitem>
</varlistentry>
@@ -58,68 +59,65 @@
<programlisting role="php">
<![CDATA[
<?php
-$var1 = 'Bonjour le monde !';
-$var2 = '';
-
-$var2 =& $var1;
+$var1 = 'Hello';
+$var1 .= ' World';
+$var2 = $var1;
-debug_zval_dump(&$var1);
+debug_zval_dump($var1);
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
-&string(18) "Bonjour le monde !" refcount(3)
+string(11) "Hello World" refcount(3)
]]>
</screen>
</example>
</para>
<note>
- <title>Faites attention avec <literal>refcount</literal></title>
+ <title>Comprendre le <literal>refcount</literal></title>
<para>
- La valeur <literal>refcount</literal> 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 <literal>refcount</literal>
- de <literal>2</literal>. La troisième référence est créée lors de l'appel à la
- fonction <function>debug_zval_dump</function>.
+ 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>
- Ce comportement est encore plus fin lorsqu'une variable n'est pas passée
- par référence à la fonction <function>debug_zval_dump</function>. Pour illustrer
- ceci, voici une version modifiée de l'exemple ci-dessus :
+ Le moteur Zend utilise le comptage de référence pour deux raisons
+ différentes :
</para>
<para>
- <example>
- <title/>
- <programlisting role="php">
-<![CDATA[
-<?php
-$var1 = 'Bonjour le monde !';
-$var2 = '';
-
-$var2 =& $var1;
-
-debug_zval_dump($var1); // non passée par référence, cette fois-ci
-?>
-]]>
- </programlisting>
- &example.outputs;
- <screen>
-<![CDATA[
-string(18) "Bonjour le monde !" refcount(1)
-]]>
- </screen>
- </example>
+ <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>
- Pourquoi <literal>refcount(1)</literal> ? Parce qu'une copie de <literal>$var1</literal> a
- été faite, lors de l'appel de la fonction.
+ 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>
- Cette fonction devient encore <emphasis>plus</emphasis> confuse lorsqu'une
- variable avec un <literal>refcount</literal> de <literal>1</literal> est
- passée (par copie/valeur) :
+ 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>
@@ -127,7 +125,11 @@ string(18) "Bonjour le monde !" refcount(1)
<programlisting role="php">
<![CDATA[
<?php
-$var1 = 'Bonjour le monde !';
+$var1 = 'Hello';
+$var1 .= ' World';
+// Point three variables as references to the same value
+$var2 =& $var1;
+$var3 =& $var1;
debug_zval_dump($var1);
?>
@@ -136,30 +138,26 @@ debug_zval_dump($var1);
&example.outputs;
<screen>
<![CDATA[
-string(18) "Bonjour le monde !" refcount(2)
+string(11) "Hello World" refcount(2)
]]>
</screen>
</example>
</para>
<para>
- Un <literal>refcount</literal> de <literal>2</literal>, ici, est vraiment
- inattendu. Tout spécialement si on considère les exemples ci-dessus. Donc, que
- se passe-t-il ?
- </para>
- <para>
- Lorsqu'une variable a une seule référence (faire <literal>$var1</literal>
- avant qu'elle ne soit utilisée en tant qu'argument de la fonction
- <function>debug_zval_dump</function>), le moteur PHP optimise
- la façon dont elle est passée à la fonction. En interne, PHP traite
- <literal>$var1</literal> comme une référence (et donc, le <literal>refcount</literal>
- est incrémenté), et avec le cas où le passage par référence intervient, une copie est alors
- faite, <emphasis>mais uniquement</emphasis> au moment de l'écriture. Ceci est connu comme "la copie à l'écriture".
+ 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>
- Donc, si <function>debug_zval_dump</function> 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 <literal>refcount</literal> est incrémenté
- à <literal>2</literal> pour l'appel à la fonction.
+ 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>