<?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.incompatible.php',
    1 => 'Nicht abw&auml;rtskompatible &Auml;nderungen',
    2 => 'Nicht abw&auml;rtskompatible &Auml;nderungen',
  ),
  'up' => 
  array (
    0 => 'migration81.php',
    1 => 'Migration von PHP 8.0.x auf PHP 8.1.x',
  ),
  'prev' => 
  array (
    0 => 'migration81.constants.php',
    1 => 'Neue globale Konstanten',
  ),
  'next' => 
  array (
    0 => 'migration81.deprecated.php',
    1 => 'Veraltete Features',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'appendices/migration81/incompatible.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration81.incompatible" class="sect1">
 <h2 class="title">Nicht abwärtskompatible Änderungen</h2>

 <div class="sect2" id="migration81.incompatible.core">
  <h3 class="title">PHP Core</h3>

  <div class="sect3" id="migration81.incompatible.core.globals-access">
   <h4 class="title">Zugriffsbeschränkungen für $GLOBALS</h4>

   <p class="para">
    Der Zugriff auf das Array <var class="varname"><a href="reserved.variables.globals.php" class="classname">$GLOBALS</a></var> unterliegt nun einer
    einer Reihe von Einschränkungen. Der Lese- und Schreibzugriff auf einzelne
    Array-Elemente wie <code class="code">$GLOBALS[&#039;var&#039;]</code> funktioniert weiterhin wie
    bisher. Der nur lesende Zugriff auf das Gesamt-Array
    <var class="varname"><a href="reserved.variables.globals.php" class="classname">$GLOBALS</a></var> wird ebenfalls wird weiterhin unterstützt.
    Allerdings wird der Schreibzugriff auf das Gesamt-Array
    <var class="varname"><a href="reserved.variables.globals.php" class="classname">$GLOBALS</a></var> nicht mehr unterstützt. Zum Beispiel wird
    <code class="code">array_pop($GLOBALS)</code> zu einem Fehler führen.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.static-variable-inheritance">
   <h4 class="title">
    Verwendung von <span class="modifier">static</span>-Variablen in geerbten Methoden
   </h4>

   <p class="para">
    Wenn eine Methode, die statische Variablen verwendet, geerbt (aber nicht
    überschrieben) wird, teilt die geerbte Methode nun die statischen
    Variablen mit der Methode der Elternklasse.
    <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">class </span><span style="color: #0000BB">A </span><span style="color: #007700">{<br />    public static function </span><span style="color: #0000BB">counter</span><span style="color: #007700">() {<br />        static </span><span style="color: #0000BB">$counter </span><span style="color: #007700">= </span><span style="color: #0000BB">0</span><span style="color: #007700">;<br />        </span><span style="color: #0000BB">$counter</span><span style="color: #007700">++;<br />        return </span><span style="color: #0000BB">$counter</span><span style="color: #007700">;<br />    }<br />}<br />class </span><span style="color: #0000BB">B </span><span style="color: #007700">extends </span><span style="color: #0000BB">A </span><span style="color: #007700">{}<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(1)<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">A</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(2)<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(3), vorher int(1)<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">B</span><span style="color: #007700">::</span><span style="color: #0000BB">counter</span><span style="color: #007700">()); </span><span style="color: #FF8000">// int(4), vorher int(2)<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>

    Das bedeutet, dass sich statische Variablen in Methoden nun genauso
    verhalten wie statische Eigenschaften.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.optional-before-required">
   <h4 class="title">Angabe optionaler Parameter vor den erforderlichen</h4>

   <p class="para">
    Ein <a href="functions.arguments.php#functions.arguments.default" class="link">optionaler Parameter</a>,
    der vor den erforderlichen Parametern angegeben wird, wird nun immer als
    erforderlich angesehen. Dies ist auch der Fall, wenn eine Funktion mit
    <a href="functions.arguments.php#functions.named-arguments" class="link">benannten Parametern</a>
    aufgerufen wird. Seit PHP 8.0.0, aber vor PHP 8.1.0, löst das untenstehende
    Beispiel einen Hinweis darauf aus, dass die Definition veraltet ist, läuft
    aber beim Aufruf trotzdem fehlerfrei. Ab PHP 8.1.0 wird ein Fehler der
    Klasse <span class="classname"><a href="class.argumentcounterror.php" class="classname">ArgumentCountError</a></span> ausgelöst, so wie es auch
    bei einem Aufruf mit positionsbezogenen Parametern der Fall wäre.

    <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 </span><span style="color: #0000BB">makeyogurt</span><span style="color: #007700">(</span><span style="color: #0000BB">$container </span><span style="color: #007700">= </span><span style="color: #DD0000">"bowl"</span><span style="color: #007700">, </span><span style="color: #0000BB">$flavour</span><span style="color: #007700">)<br />{<br />    return </span><span style="color: #DD0000">"Making a </span><span style="color: #0000BB">$container</span><span style="color: #DD0000"> of </span><span style="color: #0000BB">$flavour</span><span style="color: #DD0000"> yogurt.\n"</span><span style="color: #007700">;<br />}<br />try<br />{<br />    echo </span><span style="color: #0000BB">makeyogurt</span><span style="color: #007700">(</span><span style="color: #0000BB">flavour</span><span style="color: #007700">: </span><span style="color: #DD0000">"raspberry"</span><span style="color: #007700">);<br />}<br />catch (</span><span style="color: #0000BB">Error $e</span><span style="color: #007700">)<br />{<br />    echo </span><span style="color: #0000BB">get_class</span><span style="color: #007700">(</span><span style="color: #0000BB">$e</span><span style="color: #007700">), </span><span style="color: #DD0000">' - '</span><span style="color: #007700">, </span><span style="color: #0000BB">$e</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getMessage</span><span style="color: #007700">(), </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">;<br />}<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <p class="para">Das oben gezeigte Beispiel erzeugt mit PHP 8.0 folgende Ausgabe:</p>
     <div class="example-contents screen">
<div class="cdata"><pre>
Deprecated: Required parameter $flavour follows optional parameter $container
 in example.php on line 3
Making a bowl of raspberry yogurt.
</pre></div>
     </div>
     <p class="para">Das oben gezeigte Beispiel erzeugt mit PHP 8.1 folgende Ausgabe:</p>
     <div class="example-contents screen">
<div class="cdata"><pre>
Deprecated: Optional parameter $container declared before required parameter
 $flavour is implicitly treated as a required parameter in example.php on line 3
ArgumentCountError - makeyogurt(): Argument #1 ($container) not passed
</pre></div>
     </div>
    </div>
   </p>
   <p class="para">
    Es ist zu beachten, dass ein Standardwert von <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> vor erforderlichen
    Parametern verwendet werden kann, um einen
    <a href="language.types.declarations.php#language.types.declarations.nullable" class="link">nullbaren Typ</a>
    anzugeben, aber der Parameter wird trotzdem benötigt.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.type-compatibility-internal">
   <h4 class="title">Kompatibilität des Rückgabetyps mit internen Klassen</h4>

   <p class="para">
    Die meisten nicht-finalen internen Methoden erfordern nun, dass
    überschreibende Methoden einen kompatiblen Rückgabetyp deklarieren,
    andernfalls wird bei der Vererbungsüberprüfung ein Hinweis darauf
    ausgegeben, dass die Funktionsweise veraltet ist. Falls der Rückgabetyp
    aufgrund von Kompatibilitätsproblemen zwischen PHP-Versionen für eine
    überschreibende Methode nicht deklariert werden kann, kann das Attribut
    <span class="classname"><a href="class.returntypewillchange.php" class="classname">ReturnTypeWillChange</a></span> hinzugefügt werden, um den
    Veraltet-Hinweis zu unterdrücken.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.core.new-keywords">
   <h4 class="title">Neue Schlüsselwörter</h4>
   <p class="para">
    <code class="literal">readonly</code> ist nun ein Schlüsselwort. Es kann jedoch
    weiterhin als Name einer Funktion verwendet werden.
   </p>
   <p class="para">
    <code class="literal">never</code> ist nun ein reserviertes Wort, sodass es nicht verwendet werden kann,
    um eine Klasse, eine Schnittstelle oder einen Trait zu benennen,
    und es darf auch nicht in Namespaces verwendet werden.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.incompatible.resource2object">
  <h3 class="title">Umstellung von Ressourcen auf Objekte</h3>

  <p class="para">
   Mehrere <a href="language.types.resource.php" class="link">Ressource</a>n wurden zu <a href="language.types.object.php" class="link">Objekt</a>en migriert.
   Rückgabewertprüfungen mit <span class="function"><a href="function.is-resource.php" class="function">is_resource()</a></span> sollten durch
   Prüfungen auf <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> ersetzt werden.
  </p>
  <ul class="itemizedlist">
   <li class="listitem">
    <p class="para">
     Die <a href="book.fileinfo.php" class="link">FileInfo</a>-Funktionen akzeptieren
     nun <span class="classname"><a href="class.finfo.php" class="classname">finfo</a></span>-Objekte anstelle von
     <code class="literal">fileinfo</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.ftp.php" class="link">FTP</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.ftp-connection.php" class="classname">FTP\Connection</a></span>-Objekte anstelle von
     <code class="literal">ftp</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.imap.php" class="link">IMAP</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.imap-connection.php" class="classname">IMAP\Connection</a></span>-Objekte anstelle von
     <code class="literal">imap</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.ldap.php" class="link">LDAP</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.ldap-connection.php" class="classname">LDAP\Connection</a></span>-Objekte anstelle von
     <code class="literal">ldap link</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.ldap.php" class="link">LDAP</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.ldap-result.php" class="classname">LDAP\Result</a></span>-Objekte anstelle von
     <code class="literal">ldap result</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.ldap.php" class="link">LDAP</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.ldap-result-entry.php" class="classname">LDAP\ResultEntry</a></span>-Objekte anstelle von
     <code class="literal">ldap result entry</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch
     zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.pgsql.php" class="link">PgSQL</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.pgsql-connection.php" class="classname">PgSql\Connection</a></span>-Objekte anstelle von
     <code class="literal">pgsql link</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.pgsql.php" class="link">PgSQL</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.pgsql-result.php" class="classname">PgSql\Result</a></span>-Objekte anstelle von
     <code class="literal">pgsql result</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.pgsql.php" class="link">PgSQL</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.pgsql-lob.php" class="classname">PgSql\Lob</a></span>-Objekte anstelle von
     <code class="literal">pgsql large object</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch
     zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.pspell.php" class="link">PSpell</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.pspell-dictionary.php" class="classname">PSpell\Dictionary</a></span>-Objekte anstelle von
     <code class="literal">pspell</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
   <li class="listitem">
    <p class="para">
     Die <a href="book.pspell.php" class="link">PSpell</a>-Funktionen akzeptieren nun
     <span class="classname"><a href="class.pspell-config.php" class="classname">PSpell\Config</a></span>-Objekte anstelle von
     <code class="literal">pspell config</code>-<a href="language.types.resource.php" class="link">Ressource</a>n und geben diese auch zurück.
    </p>
   </li>
  </ul>
 </div>

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

  <p class="para">
   <span class="function"><a href="mysqli-result.fetch-fields.php" class="function">mysqli_fetch_fields()</a></span> und
   <span class="function"><a href="mysqli-result.fetch-field-direct.php" class="function">mysqli_fetch_field_direct()</a></span> geben nun bei der
   Eigenschaft <span class="property">max_length</span> immer <code class="literal">0</code>
   zurück. Dieser Wert kann berechnet werden, indem die Ergebnismenge in einer
   Schleife durchlaufen und die maximale Länge ermittlt wird. Dies ist der
   Algorithmus, den PHP zuvor intern verwendet hat.
  </p>

  <p class="para">
   Die Option <strong><code><a href="mysqli.constants.php#constant.mysqli-stmt-attr-update-max-length">MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH</a></code></strong> hat
   keine Auswirkung mehr.
  </p>

  <p class="para">
   Die Option <strong><code><a href="mysqli.constants.php#constant.mysqli-store-result-copy-data">MYSQLI_STORE_RESULT_COPY_DATA</a></code></strong> hat keine
   Auswirkung mehr. Die Übergabe eines beliebigen Wertes an den
   <code class="parameter">mode</code>-Parameter von
   <span class="methodname"><a href="mysqli.store-result.php" class="methodname">mysqli::store_result()</a></span> hat keine Auswirkung mehr.
  </p>

  <p class="para">
   <span class="methodname"><a href="mysqli.construct.php" class="methodname">mysqli::connect()</a></span> gibt bei Erfolg nun <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>
   anstelle von <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> zurück.
  </p>

  <p class="para">
   Der Standard-Fehlerbehandlungsmodus wurde von &quot;silent&quot; auf &quot;exceptions&quot;
   geändert. Siehe die Seite
   <a href="mysqli-driver.report-mode.php" class="link">MySQLi-Berichtsmodus</a> für
   weitere Details darüber, was das bedeutet, und wie man dieses Attribut
   explizit setzt. Um das vorherige Verhalten wiederherzustellen, kann
   folgendes verwendet werden: <code class="code">mysqli_report(MYSQLI_REPORT_OFF);</code>
  </p>

  <p class="para">
   Klassen, die <span class="methodname"><a href="mysqli-stmt.execute.php" class="methodname">mysqli_stmt::execute()</a></span> erweitern,
   müssen nun den zusätzlichen optionalen Parameter angeben.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.mysqlnd">
  <h3 class="title">MySQLnd</h3>

  <p class="para">
   Die INI-Direktive
   <a href="mysqlnd.config.php#ini.mysqlnd.fetch_data_copy" class="link">mysqlnd.fetch_data_copy</a>
   wurde entfernt. Dies sollte zu keinen für den Benutzer sichtbaren
   Verhaltensänderungen führen.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.openssl">
  <h3 class="title">OpenSSL</h3>

  <p class="para">
   Private EC-Schlüssel werden jetzt wie alle anderen Schlüssel im
   <abbr title="Public Key Cryptography Standards">PKCS</abbr>#8-Format statt im traditionellen Format exportiert.
  </p>
  <p class="para">
   <span class="function"><a href="function.openssl-pkcs7-encrypt.php" class="function">openssl_pkcs7_encrypt()</a></span> und
   <span class="function"><a href="function.openssl-cms-encrypt.php" class="function">openssl_cms_encrypt()</a></span> verwenden nun standardmäßig
   AES-128-CBC anstelle von RC2-40. Die RC2-40-Chiffre gilt als unsicher und
   wird von OpenSSL 3 standardmäßig nicht aktiviert.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.pdo">
  <h3 class="title">PHP-Datenobjekte</h3>

  <p class="para">
   <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong> wandelt nun Werte vom Typ
   <a href="language.types.boolean.php" class="link">Boolean</a> in <code class="literal">&quot;0&quot;</code> oder <code class="literal">&quot;1&quot;</code> um. Zuvor
   wurden <a href="language.types.boolean.php" class="link">Boolean</a>s nicht stringifiziert.
  </p>
  <p class="para">
   Wenn <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong> nicht aktiviert ist,
   Bindet der Aufruf von <span class="methodname"><a href="pdostatement.bindcolumn.php" class="methodname">PDOStatement::bindColumn()</a></span> mit
   <strong><code><a href="pdo.constants.php#pdo.constants.param-lob">PDO::PARAM_LOB</a></code></strong> das Ergebnis eines Streams nun
   dauerhaft ein. Zuvor war das Ergebnis entweder ein Stream oder eine
   Zeichenkette, je nach verwendetem Datenbanktreiber und dem Zeitpunkt der
   Bindung.
  </p>

  <div class="sect3" id="migration81.incompatible.pdo.mysql">
   <h4 class="title">MySQL-Treiber</h4>

   <p class="para">
    Integer- und Float-Werte in Ergebnismengen werden nun als native PHP-Typen
    anstelle von <a href="language.types.string.php" class="link">String</a>s zurückgegeben, wenn emulierte vorbereitete
    Anweisungen verwendet werden. Dies entspricht dem Verhalten von nativen
    vorbereiteten Anweisungen. Das vorherige Verhalten kann wiederhergestellt
    werden, indem die Option <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong>
    aktiviert wird.
   </p>
  </div>

  <div class="sect3" id="migration81.incompatible.pdo.sqlite">
   <h4 class="title">SQLite-Treiber</h4>

   <p class="para">
    Integer- und Float-Werte in Ergebnismengen werden nun als native PHP-Typen
    zurückgegeben. Das vorherige Verhalten kann wiederhergestellt werden,
    indem die Option <strong><code><a href="pdo.constants.php#pdo.constants.attr-stringify-fetches">PDO::ATTR_STRINGIFY_FETCHES</a></code></strong>
    aktiviert wird.
   </p>
  </div>
 </div>

 <div class="sect2" id="migration81.incompatible.phar">
  <h3 class="title">Phar</h3>

  <p class="para">
   Um der <span class="interfacename"><a href="class.arrayaccess.php" class="interfacename">ArrayAccess</a></span>-Schnittstelle zu
   entsprechen, geben <span class="methodname"><a href="phar.offsetunset.php" class="methodname">Phar::offsetUnset()</a></span> und
   <span class="methodname"><a href="phardata.offsetunset.php" class="methodname">PharData::offsetUnset()</a></span> keinen <a href="language.types.boolean.php" class="link">Boolean</a>-Wert mehr
   zurück.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.standard">
  <h3 class="title">Standardfunktionen</h3>

  <p class="para">
   <span class="function"><a href="function.version-compare.php" class="function">version_compare()</a></span> akzeptiert keine undokumentierten
   Operator-Abkürzungen mehr.
  </p>

  <p class="para">
   <span class="function"><a href="function.htmlspecialchars.php" class="function">htmlspecialchars()</a></span>,
   <span class="function"><a href="function.htmlentities.php" class="function">htmlentities()</a></span>,
   <span class="function"><a href="function.htmlspecialchars-decode.php" class="function">htmlspecialchars_decode()</a></span>,
   <span class="function"><a href="function.html-entity-decode.php" class="function">html_entity_decode()</a></span>
   und <span class="function"><a href="function.get-html-translation-table.php" class="function">get_html_translation_table()</a></span>
   verwenden nun standardmäßig <code class="literal">ENT_QUOTES | ENT_SUBSTITUTE</code>
   anstelle von <strong><code><a href="string.constants.php#constant.ent-compat">ENT_COMPAT</a></code></strong>. Das bedeutet, dass
   <code class="literal">&#039;</code> zu <code class="literal">&amp;#039;</code> umgewandelt wird,
   während vorher nichts geändert wurde. Darüber hinaus werden fehlerhafte
   UTF-8-Zeichen durch ein Unicode-Ersatzzeichen ersetzt und nicht mehr durch
   eine leere Zeichenkette.
  </p>

  <p class="para">
   <span class="function"><a href="function.debug-zval-dump.php" class="function">debug_zval_dump()</a></span> gibt nun nicht nur den eigenen
   Referenzzähler aus, sondern auch den Referenzzähler des Referenz-Wrappers,
   anstatt dem Wert ein <code class="literal">&amp;</code> voranzustellen. Dies ist ein
   genaueres Modell der Referenzdarstellung seit PHP 7.0.
  </p>

  <p class="para">
   <span class="function"><a href="function.debug-zval-dump.php" class="function">debug_zval_dump()</a></span> gibt für festgelegte Zeichenketten und
   unveränderliche Arrays nun <code class="literal">interned</code> aus.
  </p>
 </div>

 <div class="sect2" id="migration81.incompatible.spl">
  <h3 class="title">Standard-PHP-Bibliothek (SPL)</h3>

  <p class="para">
   <span class="classname"><a href="class.splfixedarray.php" class="classname">SplFixedArray</a></span> wird nun wie ein <a href="language.types.array.php" class="link">Array</a> in JSON
   kodiert.
  </p>
 </div>

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