<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/reserved.attributes.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'class.nodiscard.php',
    1 => 'NoDiscard',
    2 => 'L\'attribut NoDiscard',
  ),
  'up' => 
  array (
    0 => 'reserved.attributes.php',
    1 => 'Attributs pr&eacute;d&eacute;finis',
  ),
  'prev' => 
  array (
    0 => 'deprecated.construct.php',
    1 => 'Deprecated::__construct',
  ),
  'next' => 
  array (
    0 => 'nodiscard.construct.php',
    1 => 'NoDiscard::__construct',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'language/predefined/attributes/nodiscard.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/class.nodiscard.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="class.nodiscard" class="reference">
 <h1 class="title">L&#039;attribut NoDiscard</h1>
 

 <div class="partintro"><p class="verinfo">(PHP 8 &gt;= 8.5.0)</p>

  <div class="section" id="nodiscard.intro">
   <h2 class="title">Introduction</h2>
   <p class="simpara">
    Cet attribut peut être utilisé pour indiquer que la valeur de retour d&#039;une
    fonction ou d&#039;une méthode ne doit pas être ignorée. Si la valeur de retour
    n&#039;est utilisée d&#039;aucune manière, un avertissement sera émis.
   </p>
   <p class="simpara">
    Cela est utile pour les fonctions où ne pas vérifier la valeur de retour
    est probablement un bogue.
   </p>
   <p class="simpara">
    Pour ignorer intentionnellement la valeur de retour d&#039;une telle fonction,
    il est possible d&#039;utiliser le cast (void) pour supprimer l&#039;avertissement.
   </p>
   <blockquote class="note"><p><strong class="note">Note</strong>: 
    <span class="simpara">
     Étant donné que les attributs sont conçus pour être rétrocompatibles,
     <code class="code">#[\NoDiscard]</code> peut être ajouté aux fonctions et méthodes
     même lorsque PHP 8.4 ou inférieur est supporté, il ne fera simplement rien.
     Sur PHP 8.5 et supérieur, un avertissement sera émis si le résultat n&#039;est pas utilisé.
     Pour supprimer l&#039;avertissement sans utiliser <code class="code">(void)</code>,
     qui n&#039;est pas supporté avant PHP 8.5,
     il est possible d&#039;utiliser une variable comme <code class="code">$_</code>.
    </span>
   </p></blockquote>
  </div>

  <div class="section" id="nodiscard.synopsis">
   <h2 class="title">Synopsis de la classe</h2>

   <div class="classsynopsis"><div class="classsynopsisinfo">
    
     <span class="attribute"><a href="class.attribute.php">#[\Attribute]</a> </span><br>
     <span class="modifier">final</span>
     <span class="modifier">class</span> <strong class="classname"><strong class="classname">NoDiscard</strong></strong>
     {</div>

    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Propriétés */</div>
    <div class="fieldsynopsis">
     <span class="modifier">public</span>
     <span class="modifier">readonly</span>
     <span class="type">?</span><span class="type"><span class="type"><a href="language.types.string.php" class="type string">string</a></span><span class="type"></span></span>
      <var class="varname"><a href="class.nodiscard.php#nodiscard.props.message">$<var class="varname">message</var></a></var>;</div>


    <div class="classsynopsisinfo classsynopsisinfo_comment">/* Méthodes */</div>
    <div class="constructorsynopsis dc-description">
   <span class="modifier">public</span> <span class="methodname"><a href="nodiscard.construct.php" class="methodname">__construct</a></span>(<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.string.php" class="type string">string</a></span></span> <code class="parameter">$message</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>)</div>

   }</div>

  </div>

  <div class="section" id="nodiscard.props">
   <h2 class="title">Propriétés</h2>
   <dl>
    
     <dt id="nodiscard.props.message"><var class="varname">message</var></dt>
     <dd>
      <span class="simpara">
       Un message optionnel expliquant pourquoi la valeur de retour ne doit pas être ignorée.
      </span>
     </dd>
    
   </dl>
  </div>

  <div class="section">
   <h2 class="title">Exemples</h2>
   <div class="example" id="example-1">
    <p><strong>Exemple #1 Utilisation basique</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">/**<br /> * Traite tous les éléments donnés et retourne un tableau avec les résultats de<br /> * l'opération pour chaque élément. `null` indique un succès et une Exception<br /> * indique une erreur. Les clés du tableau de résultat correspondent aux clés du tableau $items.<br /> *<br /> * @param array&lt;string&gt; $items<br /> * @return array&lt;null|Exception&gt;<br /> */<br /></span><span style="color: #007700">#[</span><span style="color: #0000BB">\NoDiscard</span><span style="color: #007700">(</span><span style="color: #DD0000">"as processing might fail for individual items"</span><span style="color: #007700">)]<br />function </span><span style="color: #0000BB">bulk_process</span><span style="color: #007700">(array </span><span style="color: #0000BB">$items</span><span style="color: #007700">): array {<br />    </span><span style="color: #0000BB">$results </span><span style="color: #007700">= [];<br /><br />    foreach (</span><span style="color: #0000BB">$items </span><span style="color: #007700">as </span><span style="color: #0000BB">$key </span><span style="color: #007700">=&gt; </span><span style="color: #0000BB">$item</span><span style="color: #007700">) {<br />        if (</span><span style="color: #0000BB">\random_int</span><span style="color: #007700">(</span><span style="color: #0000BB">0</span><span style="color: #007700">, </span><span style="color: #0000BB">9999</span><span style="color: #007700">) &lt; </span><span style="color: #0000BB">9999</span><span style="color: #007700">) {<br />            </span><span style="color: #FF8000">// On prétend faire quelque chose d'utile avec $item,<br />            // ce qui réussira dans 99,99% des cas.<br />            </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Processing </span><span style="color: #007700">{</span><span style="color: #0000BB">$item</span><span style="color: #007700">}</span><span style="color: #DD0000">"</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />            </span><span style="color: #0000BB">$error </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br />        } else {<br />            </span><span style="color: #0000BB">$error </span><span style="color: #007700">= new </span><span style="color: #0000BB">\Exception</span><span style="color: #007700">(</span><span style="color: #DD0000">"Failed to process </span><span style="color: #007700">{</span><span style="color: #0000BB">$item</span><span style="color: #007700">}</span><span style="color: #DD0000">."</span><span style="color: #007700">);<br />        }<br /><br />        </span><span style="color: #0000BB">$results</span><span style="color: #007700">[</span><span style="color: #0000BB">$key</span><span style="color: #007700">] = </span><span style="color: #0000BB">$error</span><span style="color: #007700">;<br />    }<br /><br />    return </span><span style="color: #0000BB">$results</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #0000BB">bulk_process</span><span style="color: #007700">(</span><span style="color: #0000BB">$items</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>La sortie de l&#039;exemple ci-dessus en PHP 8.5 est similaire à :</p></div>
    <div class="example-contents screen">
<div class="cdata"><pre>
Warning: The return value of function bulk_process() should either be used or intentionally ignored by casting it as (void), as processing might fail for individual items
</pre></div>
    </div>
   </div>
   <div class="example" id="example-2">
    <p><strong>Exemple #2 Ignorer intentionnellement la valeur de retour</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">#[</span><span style="color: #0000BB">\NoDiscard</span><span style="color: #007700">]<br />function </span><span style="color: #0000BB">some_command</span><span style="color: #007700">(): </span><span style="color: #0000BB">int </span><span style="color: #007700">{<br />    return </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">// Supprimer l'avertissement avec (void) - PHP 8.5+<br /></span><span style="color: #007700">(</span><span style="color: #0000BB">void</span><span style="color: #007700">) </span><span style="color: #0000BB">some_command</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// Pour la compatibilité avec les versions de PHP antérieures à 8.5, utiliser une variable temporaire<br /></span><span style="color: #0000BB">$_ </span><span style="color: #007700">= </span><span style="color: #0000BB">some_command</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </div>

  <div class="section" id="nodiscard.seealso">
   <h2 class="title">Voir aussi</h2>
   <ul class="simplelist">
    <li><a href="language.attributes.php" class="link">Vue d&#039;ensemble des attributs</a></li>
   </ul>
  </div>

 </div>

 






<h2>Sommaire</h2><ul class="chunklist chunklist_reference"><li><a href="nodiscard.construct.php">NoDiscard::__construct</a> — Construit une nouvelle instance de l'attribut NoDiscard</li></ul>
</div>
<?php manual_footer($setup); ?>