<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration81.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'migration81.deprecated.php',
    1 => 'Veraltete Features',
    2 => 'Veraltete Features',
  ),
  'up' => 
  array (
    0 => 'migration81.php',
    1 => 'Migration von PHP 8.0.x auf PHP 8.1.x',
  ),
  'prev' => 
  array (
    0 => 'migration81.incompatible.php',
    1 => 'Nicht abw&auml;rtskompatible &Auml;nderungen',
  ),
  'next' => 
  array (
    0 => 'migration81.other-changes.php',
    1 => 'Sonstige &Auml;nderungen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'appendices/migration81/deprecated.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration81.deprecated" class="sect1">
 <h2 class="title">Veraltete Features</h2>

 <div class="sect2" id="migration81.deprecated.core">
  <h3 class="title">PHP-Kern</h3>

  <div class="sect3" id="migration81.deprecated.core.serialize-interface">
   <h4 class="title">
    Implementierung von <span class="interfacename"><a href="class.serializable.php" class="interfacename">Serializable</a></span> ohne
    <span class="function"><strong>__serialize()</strong></span> und <span class="function"><strong>__unserialize()</strong></span>
   </h4>

   <p class="para">
    Sofern keine Unterstützung für PHP-Versionen vor 7.4 erforderlich ist,
    sollten nur diese beiden magischen Methoden implementiert werden,
    andernfalls sollten sowohl Schnittstellenmethoden als auch magische
    Methoden implementiert werden.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.null-not-nullable-internal">
   <h4 class="title">Übergabe von <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> an den Parameter einer eingebauten Funktion, der <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> nicht erlaubt</h4>

   <p class="para">
    Es wird empfohlen, <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> nicht mehr an skalare Parameter von eingebauten
    Funktionen zu übergeben. Andernfalls wird nun ein entsprechender Hinweis
    ausgegeben. Dieses Verhalten wurde eingeführt, um es an die Funktionsweise
    von benutzerdefinierten Funktionen anzugleichen, bei denen
    <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>-validierende Parameter zu diesem Zweck explizit markiert werden
    müssen.

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">str_contains</span><span style="color: #007700">(</span><span style="color: #DD0000">"foobar"</span><span style="color: #007700">, </span><span style="color: #0000BB">null</span><span style="color: #007700">));<br /></span><span style="color: #FF8000">// Deprecated: Passing null to parameter #2 ($needle) of type string<br />//             is deprecated<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.implicit-float-conversion">
   <h4 class="title">Implizite Umwandlungen von <a href="language.types.float.php" class="link">Float</a> in <a href="language.types.integer.php" class="link">Integer</a>, die nicht kompatibel sind</h4>
   <p class="para">
    Die implizite Umwandlung von <a href="language.types.float.php" class="link">Float</a> in <a href="language.types.integer.php" class="link">Integer</a>, die zu einem Verlust an
    Genauigkeit führt, ist nun veraltet. Dies betrifft <a href="language.types.array.php" class="link">Array</a>-Schlüssel,
    erzwungene Konvertierungen von <a href="language.types.integer.php" class="link">Integer</a>-Typen, und Operatoren, die mit
    <a href="language.types.integer.php" class="link">Integer</a>n arbeiten.

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$a </span><span style="color: #007700">= [];<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">15.5</span><span style="color: #007700">]; </span><span style="color: #FF8000">// veraltet, da der Schlüsselwert die 0.5-Komponente verliert<br /></span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">15.0</span><span style="color: #007700">]; </span><span style="color: #FF8000">// OK, weil 15.0 == 15<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.static-trait">
   <h4 class="title">Aufruf eines <span class="modifier">static</span>-Elements bei einem Trait</h4>

   <p class="para">
    Der Aufruf einer <span class="modifier">static</span>-Methode oder der Zugriff auf
    eine <span class="modifier">static</span>-Eigenschaft direkt in einem Trait ist
    veraltet. Auf statische Methoden und Eigenschaften sollte nur in einer
    Klasse zugegriffen werden, die den Trait verwendet.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.magic-sleep">
   <h4 class="title">Rückgabe eines nicht-<a href="language.types.array.php" class="link">Array</a>s von <span class="function"><strong>__sleep()</strong></span></h4>

   <p class="para">
    Die Rückgabe eines Wertes von
    <a href="language.oop5.magic.php#object.sleep" class="link">__sleep()</a>, der kein <a href="language.types.array.php" class="link">Array</a> ist,
    erzeugt nun eine Fehlermeldung.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.void-by-ref">
   <h4 class="title">Rückgabe per Referenz aus einer <span class="type"><span class="type"><a href="language.types.void.php" class="type void">void</a></span></span>-Funktion</h4>

   <p class="para">
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #007700">function &amp;</span><span style="color: #0000BB">test</span><span style="color: #007700">(): </span><span style="color: #0000BB">void </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    Eine solche Funktion ist widersprüchlich und gibt bereits folgende
    <strong><code><a href="errorfunc.constants.php#constant.e-notice">E_NOTICE</a></code></strong>-Meldung aus, wenn sie aufgerufen wird:
    <code class="literal">Only variable references should be returned by reference</code>.
   </p>
  </div>

  <div class="sect3" id="migration81.deprecated.core.autovivification-false">
   <h4 class="title">Automatische Erstellung (Autovivifikation) von <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong></h4>
   <p class="para">
    Autovivifikation ist der Prozess der automatischen Erstellung eines
    <a href="language.types.array.php" class="link">Array</a>s, wenn ein Wert hinzugefügt wird. Dies ist bei skalaren Werten
    verboten, jedoch war <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> eine Ausnahme. Diese Ausnahme ist nun
    veraltet.

    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$arr </span><span style="color: #007700">= </span><span style="color: #0000BB">false</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;   </span><span style="color: #FF8000">// veraltet<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
   </p>
   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <p class="para">
     Die Autovivifikation von <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> und undefinierten Werten ist weiterhin
     erlaubt:
     <div class="informalexample">
      <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Von undefiniert<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[] = </span><span style="color: #DD0000">'ein Wert'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[</span><span style="color: #DD0000">'existiertNicht'</span><span style="color: #007700">][] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #FF8000">// Von null<br /></span><span style="color: #0000BB">$arr </span><span style="color: #007700">= </span><span style="color: #0000BB">null</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$arr</span><span style="color: #007700">[] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
      </div>

     </div>
    </p>
   </p></blockquote>
  </div>

 </div>

 <div class="sect2" id="migration81.deprecated.ctype">
  <h3 class="title">ctype</h3>

  <div class="sect3" id="migration81.deprecated.ctype.nonstring-arguments">
   <h4 class="title">Überprüfung von Parametern, die keine Strings sind</h4>

   <p class="para">
    Die Übergabe eines Parameters, der kein String ist, ist veraltet. In
    Zukunft wird der Parameter als String interpretiert und nicht mehr als
    ASCII-Codepunkt. Je nach beabsichtigtem Verhalten sollte der Parameter
    entweder nach <a href="language.types.string.php" class="link">String</a> umgewandelt werden oder ein expliziter Aufruf von
    <span class="function"><a href="function.chr.php" class="function">chr()</a></span> erfolgen.
    Alle <code class="literal">ctype_*()</code>-Funktionen sind betroffen.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.deprecated.date">
  <h3 class="title">Date</h3>

  <p class="para">
   Die Funktionen <span class="function"><a href="function.date-sunrise.php" class="function">date_sunrise()</a></span> und
   <span class="function"><a href="function.date-sunset.php" class="function">date_sunset()</a></span> sind zugunsten von
   <span class="function"><a href="function.date-sun-info.php" class="function">date_sun_info()</a></span> veraltet.
  </p>

  <p class="para">
   Die Funktion <span class="function"><a href="function.strptime.php" class="function">strptime()</a></span> ist veraltet. Stattdessen sollte
   <span class="function"><a href="function.date-parse-from-format.php" class="function">date_parse_from_format()</a></span> verwendet werden (für
   Locale-unabhängiges Parsen), oder
   <span class="methodname"><a href="intldateformatter.parse.php" class="methodname">IntlDateFormatter::parse()</a></span> (für Locale-abhängiges
   Parsen).
  </p>

  <p class="para">
   Die Funktionen <span class="function"><a href="function.strftime.php" class="function">strftime()</a></span> und
   <span class="function"><a href="function.gmstrftime.php" class="function">gmstrftime()</a></span> sind veraltet. Stattdessen sollte
   <span class="function"><a href="function.date.php" class="function">date()</a></span> verwendet werden (für Locale-unabhängige
   Formatierung), oder <span class="methodname"><a href="intldateformatter.format.php" class="methodname">IntlDateFormatter::format()</a></span> (für
   Locale-abhängige Formatierung).
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.filter">
  <h3 class="title">Filter</h3>

  <p class="para">
   Die Filter <strong><code><a href="filter.constants.php#constant.filter-sanitize-string">FILTER_SANITIZE_STRING</a></code></strong> und
   <strong><code><a href="filter.constants.php#constant.filter-sanitize-stripped">FILTER_SANITIZE_STRIPPED</a></code></strong> sind veraltet.
  </p>
  <p class="para">
   Die INI-Direktive <a href="filter.configuration.php#ini.filter.default" class="link">filter.default</a>
   ist veraltet.
   
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.gd">
  <h3 class="title">GD</h3>

  <p class="para">
   Der Parameter <code class="parameter">num_points</code> der Funktionen
   <span class="function"><a href="function.imagepolygon.php" class="function">imagepolygon()</a></span>,
   <span class="function"><a href="function.imageopenpolygon.php" class="function">imageopenpolygon()</a></span> und
   <span class="function"><a href="function.imagefilledpolygon.php" class="function">imagefilledpolygon()</a></span> ist veraltet.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.hash">
  <h3 class="title">Hash</h3>

  <p class="para">
   Die Funktionen <span class="function"><a href="function.mhash.php" class="function">mhash()</a></span>,
   <span class="function"><a href="function.mhash-keygen-s2k.php" class="function">mhash_keygen_s2k()</a></span>, <span class="function"><a href="function.mhash-count.php" class="function">mhash_count()</a></span>,
   <span class="function"><a href="function.mhash-get-block-size.php" class="function">mhash_get_block_size()</a></span> und
   <span class="function"><a href="function.mhash-get-hash-name.php" class="function">mhash_get_hash_name()</a></span> sind veraltet. Stattdessen sollten
   die <code class="literal">hash_*()</code>-Funktionen verwendet werden.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.imap">
  <h3 class="title">IMAP</h3>

  <p class="para">
   Die Konstante <strong><code><a href="imap.constants.php#constant.nil">NIL</a></code></strong> ist veraltet.
   Stattdessen sollte <code class="literal">0</code> verwendet werden.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.intl">
  <h3 class="title">Intl</h3>

  <p class="para">
   Der Aufruf von <span class="methodname"><a href="intlcalendar.roll.php" class="methodname">IntlCalendar::roll()</a></span> mit einem
   <a href="language.types.boolean.php" class="link">Boolean</a>-Parameter ist veraltet. Anstelle von <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong> und <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> sollten
   <code class="literal">1</code> bzw. <code class="literal">-1</code> verwendet werden.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.mbstring">
  <h3 class="title">Multibyte-String</h3>

  <p class="para">
   Der Aufruf von <span class="function"><a href="function.mb-check-encoding.php" class="function">mb_check_encoding()</a></span> ohne Parameter ist
   veraltet.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.mysqli">
  <h3 class="title">MySQLi</h3>

  <p class="para">
   Die Eigenschaft <span class="property"><a href="class.mysqli-driver.php#mysqli-driver.props.driver-version">mysqli_driver::$driver_version</a></span> ist
   veraltet. Sie war bedeutungslos und überholt; stattdessen sollte
   <strong><code><a href="reserved.constants.php#constant.php-version-id">PHP_VERSION_ID</a></code></strong> verwendet werden.
  </p>

  <p class="para">
   Der Aufruf von <span class="methodname"><a href="mysqli.get-client-info.php" class="methodname">mysqli::get_client_info()</a></span> oder
   <span class="function"><a href="mysqli.get-client-info.php" class="function">mysqli_get_client_info()</a></span> mit dem Parameter
   <code class="parameter">mysqli</code> ist veraltet. Um die Versionsinformationen
   der Clientbibliothek zu erhalten, sollte
   <span class="function"><a href="mysqli.get-client-info.php" class="function">mysqli_get_client_info()</a></span> ohne Parameter aufgerufen
   werden.
  </p>

  <p class="para">
   Die Methode <span class="methodname"><a href="mysqli.init.php" class="methodname">mysqli::init()</a></span> ist veraltet. Der Aufruf
   von <span class="methodname"><strong>parent::init()</strong></span> sollte durch
   <span class="methodname"><strong>parent::__construct()</strong></span> ersetzt werden.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.oci8">
  <h3 class="title">OCI8</h3>

  <p class="para">
   Die INI-Direktive
   <a href="oci8.configuration.php#ini.oci8.old-oci-close-semantics" class="link">oci8.old_oci_close_semantics</a>
   ist veraltet.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.odbc">
  <h3 class="title">ODBC</h3>

  <p class="para">
   <span class="function"><a href="function.odbc-result-all.php" class="function">odbc_result_all()</a></span> ist veraltet.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.pdo">
  <h3 class="title">PDO</h3>

  <p class="para">
   Der Abrufmodus <strong><code><a href="pdo.constants.php#pdo.constants.fetch-serialize">PDO::FETCH_SERIALIZE</a></code></strong> ist veraltet.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.pgsql">
  <h3 class="title">PgSQL</h3>

  <p class="para">
   Den <code class="literal">pgsql_*()</code>-Funktionen muss der Verbindungsparameter
   nun explizit übergeben werden.
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.soap">
  <h3 class="title">SOAP</h3>

  <p class="para">
   Die <code class="literal">ssl_method</code>-Option von
   <span class="methodname"><a href="soapclient.construct.php" class="methodname">SoapClient::__construct()</a></span> ist zugunsten der
   SSL-Streamkontext-Optionen veraltet.
   
  </p>
 </div>

 <div class="sect2" id="migration81.deprecated.standard">
  <h3 class="title">Standard</h3>

  <p class="para">
   Der Aufruf von <span class="function"><a href="function.key.php" class="function">key()</a></span>, <span class="function"><a href="function.current.php" class="function">current()</a></span>,
   <span class="function"><a href="function.next.php" class="function">next()</a></span>, <span class="function"><a href="function.prev.php" class="function">prev()</a></span>,
   <span class="function"><a href="function.reset.php" class="function">reset()</a></span> oder <span class="function"><a href="function.end.php" class="function">end()</a></span> bei <a href="language.types.object.php" class="link">Objekt</a>en ist
   veraltet. Stattdessen sollte entweder das <a href="language.types.object.php" class="link">Objekt</a> vorher mit
   <span class="function"><a href="function.get-mangled-object-vars.php" class="function">get_mangled_object_vars()</a></span> in ein <a href="language.types.array.php" class="link">Array</a> umgewandelt
   werden oder es sollten die Methoden einer Klasse verwendet werden, die
   <span class="interfacename"><a href="class.iterator.php" class="interfacename">Iterator</a></span> implementiert, z. B.
   <span class="classname"><a href="class.arrayiterator.php" class="classname">ArrayIterator</a></span>.
  </p>

  <p class="para">
   Die INI-Direktive
   <a href="filesystem.configuration.php#ini.auto-detect-line-endings" class="link">auto_detect_line_endings</a>
   ist veraltet. Falls nötig, sollten <code class="literal">&quot;\r&quot;</code>-Zeilenumbrüche
   stattdessen manuell bearbeitet werden.
  </p>

  <p class="para">
   Die Konstanten <strong><code><a href="filesystem.constants.php#constant.file-binary">FILE_BINARY</a></code></strong> und
   <strong><code><a href="filesystem.constants.php#constant.file-text">FILE_TEXT</a></code></strong> sind veraltet. Sie hatten nie eine
   Auswirkung.
  </p>
 </div>

</div><?php manual_footer($setup); ?>