com doc/fr: Apply commit 12b1d4704ea448b55ec155619be1e50c0e67e9f9: language/operators.xml reference/errorfunc/functions/set-error-handler.xml

[email protected] (George Peter Banyard) Wed, 24 Feb 2021 17:45:11 +0000
Newsgroups php.doc.fr
Message-ID <[email protected]>
Commit:    c18372198eba812f19ac11b9f6db8dff474d2a46
Author:    George Peter Banyard <[email protected]>         Wed, 24 Feb 2021 15:01:53 +0000
Parents:   5bb40afef09d444981a51dabc0d9215aa75daf77
Branches:  master

Link:       http://git.php.net/?p=doc/fr.git;a=commitdiff;h=c18372198eba812f19ac11b9f6db8dff474d2a46

Log:
Apply commit 12b1d4704ea448b55ec155619be1e50c0e67e9f9

Cleanup and update docs related to @ operator

Changed paths:
  M  language/operators.xml
  M  reference/errorfunc/functions/set-error-handler.xml


Diff:
diff --git a/language/operators.xml b/language/operators.xml
index 35cd40c24e..b44961aa30 100644
--- a/language/operators.xml
+++ b/language/operators.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 783fbc2001b129f5f8956937e15e253969b8765c Maintainer: yannick Status: ready -->
+<!-- EN-Revision: 12b1d4704ea448b55ec155619be1e50c0e67e9f9 Maintainer: yannick Status: ready -->
 <!-- Reviewed: no -->
 <!-- CREDITS: DAnnebicque -->
 <chapter xml:id="language.operators" xmlns="http://docbook.org/ns/docbook">
@@ -1908,9 +1908,9 @@ echo $foo ?? $bar ?? $baz ?? $qux; // sortie 1
  <sect1 xml:id="language.operators.errorcontrol">
   <title>Opérateur de contrôle d'erreur</title>
   <simpara>
-   PHP supporte un opérateur de contrôle d'erreur : c'est @.
+   PHP supporte un opérateur de contrôle d'erreur : l'arobase (<literal>@</literal>).
    Lorsque cet opérateur est ajouté en préfixe d'une
-   expression PHP, les messages d'erreur qui peuvent être
+   expression PHP, les diagnostics d'erreur qui peuvent être
    générés par cette expression seront ignorés.
   </simpara>
   <simpara>
@@ -1921,6 +1921,38 @@ echo $foo ?? $bar ?? $baz ?? $qux; // sortie 1
    qui devra retourner 0 lorsque l'appel qui a émis l'erreur
    était précédé d'un @.
   </simpara>
+
+  <para>
+   Si un gestionnaire d'erreur personnalisé est défini avec
+   <function>set_error_handler</function>, il sera quand même appelé même si
+   le diagnostic a été ignorée, de ce fait le gestionnaire d'erreur personnalisé
+   devrait appeler <function>error_reporting</function> et vérifier que
+   l'opérateur <literal>@</literal> a été utilisé de la manière suivante :
+
+   <informalexample>
+    <programlisting role="php">
+     <![CDATA[
+<?php
+function my_error_handler($err_no, $err_msg, $filename, $linenum) {
+    if (!(error_reporting() & $err_no)) {
+        return false; // Ignoré
+    }
+    // ...
+}
+?>
+]]>
+    </programlisting>
+   </informalexample>
+  </para>
+
+  <warning>
+   <para>
+    Prior to PHP 8.0.0, the value of the severity passed to the custom error
+    handler was always <literal>0</literal> if the diagnostic was suppressed.
+    This is no longer the case as of PHP 8.0.0.
+   </para>
+  </warning>
+
   <simpara>
    Tous les messages d'erreur générés par l'expression est disponible
    dans l'élément <literal>"message"</literal> du tableau retourné par
@@ -1947,23 +1979,25 @@ $mon_fichier = @file ('non_persistent_file') or
   </para>
   <note>
    <simpara>
-    L'opérateur @ ne fonctionne qu'avec les
-    <link linkend="language.expressions">expressions</link>. La règle
-    générale de fonctionnement est la suivante : si vous pouvez prendre
-    la valeur de quelque chose, vous pouvez le préfixer avec @. Par exemple,
-    vous pouvez ajouter @ aux variables, fonctions, à
-    <function>include</function>,
-    aux constantes, etc. Vous ne pourrez pas le faire avec des éléments de
-    langage tels que les classes, <literal>if</literal> et &foreach;, etc.
+    L'opérateur <literal>@</literal> ne fonctionne qu'avec les
+    <link linkend="language.expressions">expressions</link>.
+    La règle générale est : si il est possible de prendre la valeur de quelque
+    chose alors on peut préfixé l'opérateur <literal>@</literal> à celui-ci.
+    Par exemple, il peut être préfixé devant les variables, appels de fonctions,
+    certain appels aux constructions de langages (e.g.
+    <function>include</function>), etc.
+    Il ne peut pas être préfixé devant les définitions de fonctions ou de classes,
+    ou structure conditionnelles tel que <literal>if</literal> et &foreach;, etc.
    </simpara>
   </note>
   <warning>
    <para>
-    En fait, l'opérateur "@" va aussi désactiver les rapports
-    d'erreurs critiques, qui stoppent l'exécution du script. Entre autres,
-    si vous utilisez "@" pour supprimer les erreurs de certaines
-    fonctions, et que cette fonction n'existe pas, ou qu'elle
-    a été mal orthographiée, vous n'aurez aucune indication.
+    Antérieur à PHP 8.0.0, il était possible pour l'opérateur
+    <literal>@</literal> de désactiver les erreurs critiques qui terminait
+    l'exécution du script.
+    Par exemple, préfixer <literal>@</literal> à un appel d'une fonction qui
+    n'existe pas, en étant indisponible ou mal orthographiée, causait le script
+    à se terminer sans aucune indication pourquoi.
    </para>
   </warning>
 
diff --git a/reference/errorfunc/functions/set-error-handler.xml b/reference/errorfunc/functions/set-error-handler.xml
index e8a1e2f13b..6b95bb2787 100644
--- a/reference/errorfunc/functions/set-error-handler.xml
+++ b/reference/errorfunc/functions/set-error-handler.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- $Revision$ -->
-<!-- EN-Revision: 71c12b158398eec7f65644d489749230984d43f6 Maintainer: yannick Status: ready -->
+<!-- EN-Revision: 12b1d4704ea448b55ec155619be1e50c0e67e9f9 Maintainer: yannick Status: ready -->
 <!-- Reviewed: no -->
 <refentry xml:id="function.set-error-handler" xmlns="http://docbook.org/ns/docbook">
  <refnamediv>
@@ -36,9 +36,17 @@
    erreurs sera toujours appelée. Vous pourrez toujours lire la valeur
    de l'erreur courante de <link linkend="ini.error-reporting">error_reporting</link> et
    faire réagir la fonction de gestion des erreurs en fonction.
-   Cette remarque est notamment valable si la commande a été
-   préfixée par <link linkend="language.operators.errorcontrol">@</link>.
   </para>
+
+  <warning>
+   <para>
+    Antérieur à PHP 8.0.0, la valeur de <parameter>errno</parameter> était
+    toujours <literal>0</literal> si l'expression qui a causé le diagnostic a
+    été préfixé de l'
+    <link linkend="language.operators.errorcontrol">opérateur de contrôle d'erreur @</link>.
+   </para>
+  </warning>
+
   <para>
    Notez aussi qu'il est alors confié à cette fonction de
    terminer le script (<function>die</function>)
@@ -195,6 +203,14 @@
       <row>
        <entry>8.0.0</entry>
        <entry>
+        <parameter>errno</parameter> ne vaut désormais plus <literal>0</literal> quand
+        l'expression a été ignoré par l'
+        <link linkend="language.operators.errorcontrol">opérateur de contrôle d'erreur @</link>.
+       </entry>
+      </row>
+      <row>
+       <entry>8.0.0</entry>
+       <entry>
         <parameter>errcontext</parameter> a été supprimé, et ne sera plus passé aux fermetures utilisateur.
        </entry>
       </row>