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>