<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/migration73.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'migration73.new-features.php',
    1 => 'Neue Features',
    2 => 'Neue Features',
  ),
  'up' => 
  array (
    0 => 'migration73.php',
    1 => 'Migration von PHP 7.2.x auf PHP 7.3.x',
  ),
  'prev' => 
  array (
    0 => 'migration73.php',
    1 => 'Migration von PHP 7.2.x auf PHP 7.3.x',
  ),
  'next' => 
  array (
    0 => 'migration73.new-functions.php',
    1 => 'Neue Funktionen',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'appendices/migration73/new-features.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="migration73.new-features" class="sect1">
 <h2 class="title">Neue Features</h2>

 <div class="sect2" id="migration73.new-features.core">
  <h3 class="title">PHP-Kern</h3>

  <div class="sect3" id="migration73.new-features.core.heredoc">
   <h4 class="title">Flexiblere Heredoc- und Nowdoc-Syntax</h4>

   <p class="para">
    Auf den schließenden Bezeichner für doc-Zeichenketten muss kein Semikolon
    oder Zeilenumbruch mehr folgen. Außerdem darf der schließende Bezeichner
    eingerückt sein; in diesem Fall wird die Einrückung aus allen Zeilen der
    doc-Zeichenkette entfernt.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.destruct-reference">
   <h4 class="title">Die Destrukturierung (Zerlegung) von Arrays unterstützt Referenzzuweisungen</h4>

   <p class="para">
    Die Destrukturierung von Arrays unterstützt nun mithilfe der Syntax
    <code class="literal">[&amp;$a, [$b, &amp;$c]] = $d</code> Referenzzuweisungen. Dies
    wird auch bei <span class="function"><a href="function.list.php" class="function">list()</a></span> unterstützt.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.instanceof-literals">
   <h4 class="title">Der Operator instanceof akzeptiert Literale</h4>

   <p class="para">
    Der Operator <code class="literal">instanceof</code> akzeptiert nun ein Literal als
    ersten Operanden. In diesem Fall gibt das Ergebnis immer <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> zurück.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.compileerror">
   <h4 class="title">CompileError-Exception anstelle von Kompilierungsfehlern</h4>

   <p class="para">
    Es wurde eine neue <span class="classname"><a href="class.compileerror.php" class="classname">CompileError</a></span>-Exception
    hinzugefügt, von der <span class="classname"><a href="class.parseerror.php" class="classname">ParseError</a></span> erbt. Eine kleine
    Anzahl von Kompilierungsfehlern löst nun eine
    <span class="classname"><a href="class.compileerror.php" class="classname">CompileError</a></span>-Exception aus, anstatt einen fatalen
    Fehler zu erzeugen. Derzeit betrifft dies nur Kompilierungsfehler, die von
    <span class="function"><a href="function.token-get-all.php" class="function">token_get_all()</a></span> im Modus
    <strong><code><a href="tokenizer.constants.php#constant.token-parse">TOKEN_PARSE</a></code></strong> ausgelöst werden können, aber in Zukunft
    könnten weitere Fehler in diese Exception konvertiert werden.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.trailing-commas">
   <h4 class="title">Komma am Ende von Aufrufen erlaubt</h4>

   <p class="para">
    Am Ende von Funktions- und Methodenaufrufen sind nun Kommas erlaubt.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.core.argon2id">
   <h4 class="title">Unterstützung für Argon2id</h4>

   <p class="para">
    Mit der Konfigurationsoption
    <strong class="option configure">--with-password-argon2[=dir]</strong>
    unterstützen die Funktionen <span class="function"><a href="function.password-hash.php" class="function">password_hash()</a></span>,
    <span class="function"><a href="function.password-verify.php" class="function">password_verify()</a></span>,
    <span class="function"><a href="function.password-get-info.php" class="function">password_get_info()</a></span> und
    <span class="function"><a href="function.password-needs-rehash.php" class="function">password_needs_rehash()</a></span> nun Argon2i- und
    Argon2id-Hashes. Passwörter können gehasht und mit der Konstante
    <strong><code><a href="password.constants.php#constant.password-argon2id">PASSWORD_ARGON2ID</a></code></strong> verifiziert werden. Um die
    Unterstützung für Argon2i und Argon2id in den
    <span class="function"><strong>password_*()</strong></span>-Funktionen nutzen zu können, muss PHP
    gegen die libargon2-Referenzbibliothek ≥ 20161029 gelinkt sein.
   </p>
  </div>

 </div>

 <div class="sect2" id="migration73.new-features.fpm">
  <h3 class="title">FastCGI-Prozessmanager (FPM)</h3>

  <p class="para">
   Es wurden neue Optionen zur Anpassung der FPM-Protokollierung hinzugefügt:
   <dl>
    
     <dt><code class="literal">log_limit</code></dt>
     <dd>
      <span class="simpara">
       Diese globale Option wird verwendet, um die maximale Textlänge für die
       Protokollierung festzulegen, sodass es möglich ist, mehr als 1024
       Zeichen ohne Zeilenumbrüche zu protokollieren. Dadurch werden auch
       verschiedene Probleme mit Zeilenumbrüchen behoben.
      </span>
     </dd>
    
    
     <dt><code class="literal">log_buffering</code></dt>
     <dd>
      <span class="simpara">
       Diese globale Option ermöglicht eine experimentelle Protokollierung
       ohne zusätzliche Pufferung.
      </span>
     </dd>
    
    
     <dt><code class="literal">decorate_workers_output</code></dt>
     <dd>
      <span class="simpara">
       Wenn <code class="literal">catch_workers_output</code> aktiviert ist, kann diese
       Pool-Option verwendet werden, um die Dekoration der Worker-Ausgabe zu
       deaktivieren.
      </span>
     </dd>
    
   </dl>
  </p>
 </div>

 <div class="sect2" id="migration73.new-features.bc">
  <h3 class="title">BCMath-Funktionen</h3>

  <p class="para">
   Die Funktion <span class="function"><a href="function.bcscale.php" class="function">bcscale()</a></span> kann nun auch als &quot;Getter&quot;
   verwendet werden, um die aktuell verwendete Genauigkeit abzurufen.
  </p>
 </div>

 <div class="sect2" id="migration73.new-features.ldap">
  <h3 class="title">Lightweight Directory Access Protocol (LDAP)</h3>

  <p class="para">
   Die <a href="book.ldap.php" class="link">LDAP</a>-Abfragefunktionen und die
   Funktion <span class="function"><a href="function.ldap-parse-result.php" class="function">ldap_parse_result()</a></span> unterstützen nun sämtliche
   Steuerelemente von LDAP:
   <ul class="itemizedlist">
    <li class="listitem">
     <span class="simpara">
      Um Steuerbefehle an den Server senden zu können, wurde den Funktionen
      <span class="function"><a href="function.ldap-add.php" class="function">ldap_add()</a></span>, <span class="function"><a href="function.ldap-mod-replace.php" class="function">ldap_mod_replace()</a></span>,
      <span class="function"><a href="function.ldap-mod-add.php" class="function">ldap_mod_add()</a></span>, <span class="function"><a href="function.ldap-mod-del.php" class="function">ldap_mod_del()</a></span>,
      <span class="function"><a href="function.ldap-rename.php" class="function">ldap_rename()</a></span>, <span class="function"><a href="function.ldap-compare.php" class="function">ldap_compare()</a></span>,
      <span class="function"><a href="function.ldap-delete.php" class="function">ldap_delete()</a></span>, <span class="function"><a href="function.ldap-modify-batch.php" class="function">ldap_modify_batch()</a></span>,
      <span class="function"><a href="function.ldap-search.php" class="function">ldap_search()</a></span>, <span class="function"><a href="function.ldap-list.php" class="function">ldap_list()</a></span> und
      <span class="function"><a href="function.ldap-read.php" class="function">ldap_read()</a></span> der Parameter
      <code class="literal">$controls</code> hinzugefügt.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      Um Steuerbefehle vom Server abrufen zu können wurde der Funktion
      <span class="function"><a href="function.ldap-parse-result.php" class="function">ldap_parse_result()</a></span> der Parameter
      <code class="literal">$controls</code> hinzugefügt.
     </span>
    </li>
    <li class="listitem">
     <span class="simpara">
      In den Funktionen <span class="function"><a href="function.ldap-get-option.php" class="function">ldap_get_option()</a></span> und
      <span class="function"><a href="function.ldap-set-option.php" class="function">ldap_set_option()</a></span> wurde die Unterstützung für
      <strong><code><a href="ldap.constants.php#constant.ldap-opt-server-controls">LDAP_OPT_SERVER_CONTROLS</a></code></strong> und
      <strong><code><a href="ldap.constants.php#constant.ldap-opt-client-controls">LDAP_OPT_CLIENT_CONTROLS</a></code></strong> korrigiert.
     </span>
    </li>
   </ul>
  </p>
 </div>

 <div class="sect2" id="migration73.new-features.mbstring">
  <h3 class="title">Multibyte-Zeichenketten-Funktionen</h3>

  <div class="sect3" id="migration73.new-features.mbstring.case-mapping-folding">
   <h4 class="title">Vollständige Unterstützung für Case-Mapping und Case-Folding</h4>

   <p class="para">
    Die Unterstützung für die vollständige Umwandlung und den Vergleich von
    Groß- und Kleinschreibung wurde hinzugefügt. Im Gegensatz zur einfachen
    Umwandlung der Groß-/Kleinschreibung kann die vollständige Umwandlung die
    Länge der Zeichenkette ändern. Zum Beispiel:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />mb_strtoupper</span><span style="color: #007700">(</span><span style="color: #DD0000">"Straße"</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// Ergibt in PHP 7.2 STRAßE<br />// Ergibt in PHP 7.3 STRASSE<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    In <span class="function"><a href="function.mb-convert-case.php" class="function">mb_convert_case()</a></span> stehen verschiedene Modi für die
    Umwandlung und zum Vergleich von Groß- und Kleinschreibung zur Verfügung:
    <ul class="itemizedlist">
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-lower">MB_CASE_LOWER</a></code></strong> (wird verwendet von
       <span class="function"><a href="function.mb-strtolower.php" class="function">mb_strtolower()</a></span>)
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-upper">MB_CASE_UPPER</a></code></strong> (wird verwendet von
       <span class="function"><a href="function.mb-strtoupper.php" class="function">mb_strtoupper()</a></span>)
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-title">MB_CASE_TITLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-fold">MB_CASE_FOLD</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-lower-simple">MB_CASE_LOWER_SIMPLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-upper-simple">MB_CASE_UPPER_SIMPLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-title-simple">MB_CASE_TITLE_SIMPLE</a></code></strong>
      </span>
     </li>
     <li class="listitem">
      <span class="simpara">
       <strong><code><a href="mbstring.constants.php#constant.mb-case-fold-simple">MB_CASE_FOLD_SIMPLE</a></code></strong> (wird bei Operationen
       verwendet, die Groß- und Kleinschreibung nicht berücksichtigen)
      </span>
     </li>
    </ul>
    Es wird nur uneingeschränktes und sprachunabhängiges vollständiges
    Case-Mapping durchgeführt.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.case-insensitive-ops">
   <h4 class="title">Operationen, die Groß-/Kleinschreibung nicht berücksichtigen, verwenden Case-Folding</h4>

   <p class="para">
    Bei Operationen mit Zeichenketten, die die Groß-/Kleinschreibung nicht
    berücksichtigen, wird nun Case-Folding anstelle von Case-Mapping
    verwendet. Das bedeutet, dass mehr Zeichen als gleich (ohne
    Berücksichtigung der Groß-/Kleinschreibung) angesehen werden.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.mb-case-title">
   <h4 class="title">MB_CASE_TITLE führt eine Title-Case-Umwandlung durch</h4>

   <p class="para">
    <span class="function"><a href="function.mb-convert-case.php" class="function">mb_convert_case()</a></span> führt in Verbindung mit
    <strong><code><a href="mbstring.constants.php#constant.mb-case-title">MB_CASE_TITLE</a></code></strong> nun eine Title-Case-Umwandlung durch,
    die auf den von Cased und CaseIgnorable abgeleiteten Unicode-Eigenschaften
    basiert. Diese Änderung verbessert insbesondere auch die Behandlung von
    Anführungszeichen und Apostrophen.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.ucd11">
   <h4 class="title">Unterstützung für Unicode 11</h4>

   <p class="para">
    Die Datentabellen für
    <a href="book.mbstring.php" class="link">Multibyte-Zeichenketten</a> wurden
    aktualisiert, um Unicode 11 zu unterstützen.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.long-strings">
   <h4 class="title">Unterstützung für lange Zeichenketten</h4>

   <p class="para">
    Die Funktionen für
    <a href="ref.mbstring.php" class="link">Multibyte-Zeichenketten</a> unterstützen
    nun auch Zeichenketten, die größer als 2GB sind.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.performance">
   <h4 class="title">Verbesserung der Leistung</h4>

   <p class="para">
    Die Leistung der Erweiterung
    <a href="book.mbstring.php" class="link">Multibyte-Zeichenketten</a> wurde in
    allen Bereichen erheblich verbessert. Die größten Verbesserungen betreffen
    die Funktionen zur Umwandlung der Groß-/Kleinschreibung.
   </p>
  </div>

  <div class="sect3" id="migration73.new-features.mbstring.named-captures">
   <h4 class="title">Unterstützung für benannte Übereinstimmungen</h4>

   <p class="para">
    Die <code class="literal">mb_ereg_*</code>-Funktionen unterstützen nun benannte
    Übereinstimmungen. Funktionen, die wie <span class="function"><a href="function.mb-ereg.php" class="function">mb_ereg()</a></span> nach
    Übereinstimmungen suchen, geben nun ähnlich wie die Funktionen bei PCRE
    benannte Übereinstimmungen zurück, indem sie sowohl ihre Gruppennummern
    als auch ihre Namen verwenden:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />mb_ereg</span><span style="color: #007700">(</span><span style="color: #DD0000">'(?&lt;word&gt;\w+)'</span><span style="color: #007700">, </span><span style="color: #DD0000">'国'</span><span style="color: #007700">, </span><span style="color: #0000BB">$matches</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// =&gt; [0 =&gt; "国", 1 =&gt; "国", "word" =&gt; "国"];<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    Außerdem unterstützt <span class="function"><a href="function.mb-ereg-replace.php" class="function">mb_ereg_replace()</a></span> nun die
    Notationen <code class="code">\k&lt;&gt;</code> und <code class="code">\k&#039;&#039;</code>, um benannte
    Übereinstimmungen in der Ersetzungszeichenkette zu referenzieren:
    <div class="informalexample">
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />mb_ereg_replace</span><span style="color: #007700">(</span><span style="color: #DD0000">'\s*(?&lt;word&gt;\w+)\s*'</span><span style="color: #007700">, </span><span style="color: #DD0000">"_\k&lt;word&gt;_\k'word'_"</span><span style="color: #007700">, </span><span style="color: #DD0000">' foo '</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">// =&gt; "_foo_foo_"<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

    </div>
    <code class="code">\k&lt;&gt;</code> und <code class="code">\k&#039;&#039;</code> können auch für numerische
    Verweise verwendet werden, was auch mit Gruppennummern funktioniert, die
    größer als 9 sind.
   </p>
  </div>

 </div>

 <div class="sect2" id="migration73.new-features.realine">
  <h3 class="title">Readline</h3>

  <p class="para">
   Bei der Funktion <span class="function"><a href="function.readline-info.php" class="function">readline_info()</a></span> wurde die Unterstützung
   für die Optionen <code class="literal">completion_append_character</code> und
   <code class="literal">completion_suppress_append</code> hinzugefügt. Diese Optionen
   sind nur verfügbar, wenn PHP gegen libreadline (statt libedit) gelinkt ist.
  </p>
 </div>

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