<?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 => 'de',
  ),
  'this' => 
  array (
    0 => 'class.nodiscard.php',
    1 => 'NoDiscard',
    2 => 'Das Attribut NoDiscard',
  ),
  'up' => 
  array (
    0 => 'reserved.attributes.php',
    1 => 'Vordefinierte Attribute',
  ),
  'prev' => 
  array (
    0 => 'deprecated.construct.php',
    1 => 'Deprecated::__construct',
  ),
  'next' => 
  array (
    0 => 'nodiscard.construct.php',
    1 => 'NoDiscard::__construct',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    '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">Das 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">Einführung</h2>
   <p class="simpara">
    Dieses Attribut kann verwendet werden, um zu kennzeichnen, dass der
    Rückgabewert einer Funktion oder Methode nicht verworfen werden sollte.
    Wenn der Rückgabewert in keiner Weise verwendet wird, wird eine Warnung
    ausgegeben.
   </p>
   <p class="simpara">
    Dies ist nützlich bei Funktionen, bei denen die fehlende Prüfung des
    Rückgabewerts wahrscheinlich ein Fehler ist.
   </p>
   <p class="simpara">
    Um den Rückgabewert einer solchen Funktion absichtlich zu verwerfen, kann
    ein (void)-Cast verwendet werden, um die Warnung zu unterdrücken.
   </p>
   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <span class="simpara">
     Da Attribute auf Abwärtskompatibilität ausgelegt sind, kann
     <code class="code">#[\NoDiscard]</code> auch dann zu Funktionen und Methoden 
     hinzugefügt werden, wenn PHP 8.4 oder älter unterstützt werden muss; 
     es hat dann lediglich keine Wirkung. 
     Unter PHP 8.5 und neuer wird eine Warnung ausgegeben, wenn das 
     Ergebnis unbenutzt bleibt. Um die Warnung ohne Verwendung von
     <code class="code">(void)</code> zu unterdrücken, das vor PHP 8.5
     nicht unterstützt wird, kann beispielsweise eine Variable wie
     <code class="code">$_</code> verwendet werden.
    </span>
   </p></blockquote>
  </div>

  <div class="section" id="nodiscard.synopsis">
   <h2 class="title">Klassenbeschreibung</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">/* Eigenschaften */</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">/* Methoden */</div>
    <div class="constructorsynopsis dc-description">
   <span class="modifier">public</span> <span class="modifier">function</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">Eigenschaften</h2>
   <dl>
    
     <dt id="nodiscard.props.message"><var class="varname">message</var></dt>
     <dd>
      <span class="simpara">
       Eine optionale Meldung, die erklärt, warum der Rückgabewert nicht
       verworfen werden sollte.
      </span>
     </dd>
    
   </dl>
  </div>

  <div class="section">
   <h2 class="title">Beispiele</h2>
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Grundlegende Verwendung</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 /> * Verarbeitet alle angegebenen Elemente und gibt ein Array mit den<br /> * Ergebnissen der Operation für jedes Element zurück. `null` bedeutet<br /> * Erfolg und eine Exception bedeutet einen Fehler. Die Schlüssel des<br /> * Ergebnisarrays entsprechen den Schlüsseln des $items-Arrays.<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">"da die Verarbeitung einzelner Elemente fehlschlagen kann"</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">// Simuliere das etwas Sinnvolles mit $item passiert,<br />   // was in 99,99 % der Fälle erfolgreich ist.<br />   </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Verarbeite </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">"Verarbeitung von </span><span style="color: #007700">{</span><span style="color: #0000BB">$item</span><span style="color: #007700">}</span><span style="color: #DD0000"> fehlgeschlagen."</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>Das oben gezeigte Beispiel erzeugt mit PHP 8.5 eine ähnliche Ausgabe wie:</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), da die Verarbeitung einzelner Elemente fehlschlagen kann
</pre></div>
    </div>
   </div>
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 Rückgabewert absichtlich verwerfen</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">// Warnung mit (void) unterdrücken - 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">// Für Kompatibilität mit PHP-Versionen vor 8.5 eine temporäre Variable verwenden<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">Siehe auch</h2>
   <ul class="simplelist">
    <li><a href="language.attributes.php" class="link">Übersicht über die Attribute</a></li>
   </ul>
  </div>

 </div>

 






<h2>Inhaltsverzeichnis</h2><ul class="chunklist chunklist_reference"><li><a href="nodiscard.construct.php">NoDiscard::__construct</a> — Erstellt eine neue Instanz des Attributs NoDiscard</li></ul>
</div>
<?php manual_footer($setup); ?>