Neue Features
 
  PHP-Kern
  
   Typisierte Eigenschaften
   
    Klasseneigenschaften unterstützen nun Typ-Deklarationen.
    
    Das obige Beispiel erzwingt, dass 
$user->id nur
    
int-Werte zugewiesen werden können und
    
$user->name nur 
string-Werte.
   
  
 
  
   Pfeilfunktionen
   
    Die Pfeilfunktionen bieten eine
    Kurzform der Syntax für die Definition von Funktionen mit impliziter
    Bindung an den Wertebereich.
    
   
   
  
   Eingeschränkte Kovarianz des Rückgabetyps und Kontravarianz des Parametertyps
   
    Der folgende Code funktioniert nun:
    
    Die vollständige Unterstützung der Varianz ist nur verfügbar, wenn
    automatisches Laden verwendet wird. Innerhalb einer einzelnen Datei sind
    nur nichtzyklische Typreferenzen möglich, da alle Klassen verfügbar sein
    müssen, bevor sie referenziert werden.
    
   
   
  
   Zuweisungsoperator für die Kombination mit null (null-Koaleszenz)
   
    
   
   
  
   Entpacken innerhalb von Arrays
   
    
   
   
  
   Trennzeichen für numerische Literale
   
    Bei numerischen Literalen können nun Unterstriche zwischen den Ziffern
    eingefügt werden.
    
   
   
  
   Schwache Referenzen
   
    Eine schwache Referenz
    ermöglicht es dem Programmierer, eine Referenz auf ein Objekt zu behalten,
    die nicht verhindert, dass das Objekt zerstört wird.
   
   
  
   Zulassen von Exceptions aus __toString()
   
    Bei der Methode __toString() ist es
    nun möglich, Exceptions auszulösen. Zuvor führte dies zu einem
    schwerwiegenden Fehler. Alle behebbaren schwerwiegenden Fehler bei
    Zeichenketten-Konvertierungen wurden in
    Error-Exceptions umgewandelt.
   
   
  
 
  CURL
  
   Wenn die Erweiterung mit libcurl >= 7.56.0 kompiliert wurde, unterstützt
   die Klasse CURLFile nun zusätzlich zu einfachen
   Dateinamen auch Stream-Wrapper.
  
  
 
 
  FFI
  
   FFI ist eine neue Erweiterung, die eine einfache Möglichkeit bietet, native
   Funktionen aufzurufen, auf native Variablen zuzugreifen und Datenstrukturen
   zu erzeugen/aufzurufen, die in C-Bibliotheken definiert sind.
  
  
 
  GD
  
   Der Bildfilter IMG_FILTER_SCATTER wurde hinzugefügt,
   um einen Streufilter auf Bilder anzuwenden.
  
  
 
  Hash
  
   Der crc32c-Hash, der das Castagnoli-Polynom verwendet,
   wurde hinzugefügt. Diese CRC32-Variante wird in Speichersystemen wie iSCSI,
   SCTP, Btrfs und ext4 verwendet.
  
  
 
  Multibyte-Zeichenketten
  
   Die Funktion mb_str_split() wurde hinzugefügt. Sie
   bietet die gleiche Funktionalität wie str_split(),
   arbeitet aber mit Codepunkten anstelle von Bytes.
  
  
 
 
 
  PDO
  
   Bei den Treibern für mysql, mssql, dblib, firebird und oci können
   Benutzername und Passwort nun als Teil des PDO DSN angegeben werden. Zuvor
   wurde dies nur vom pgsql-Treiber unterstützt. Wenn ein Benutzername/Passwort
   sowohl im Konstruktor als auch im DSN angegeben wird, hat der Konstruktor
   Vorrang.
  
  
   Es ist nun möglich, Fragezeichen in SQL-Abfragen zu maskieren, damit sie
   nicht als als Platzhalter für Parameter interpretiert werden. Mit
   ?? ist es möglich, ein einzelnes Fragezeichen an die
   Datenbank zu senden. Dieses kann z. B. bei PostgreSQL als
   ?-Operator verwendet werden, um zu prüfen, ob ein
   JSON-Schlüssel existiert.
  
  
 
 
  PDO_SQLite
  
   PDOStatement::getAttribute(PDO::SQLITE_ATTR_READONLY_STATEMENT)
   ermöglicht es, zu prüfen, ob eine Anweisung nur lesend ist, d. h., ob sie
   die Datenbank nicht verändert.
  
  
   PDO::setAttribute(PDO::SQLITE_ATTR_EXTENDED_RESULT_CODES, true)
   ermöglicht in PDO::errorInfo() und
   PDOStatement::errorInfo() die Verwendung der erweiterten
   SQLite3-Ergebniscodes.
  
  
 
  SQLite3
  
   Die Methode SQLite3::lastExtendedErrorCode() wurde
   hinzugefügt, um den letzten erweiterten Ergebniscode abzurufen.
  
  
   SQLite3::enableExtendedResultCodes($enable = true) wurde
   hinzugefügt, was dazu führt, dass
   SQLite3::lastErrorCode() erweiterte Ergebniscodes
   zurückgibt.
  
  
 
  Standard
  
  
   Benutzerdefinierte Serialisierung von Objekten
   
    Es wurde ein neues Verfahren für die benutzerdefinierte Serialisierung von
    Objekten hinzugefügt, das zwei neue magische Methoden verwendet:
    __serialize und __unserialize.
    
    Das neue Serialisierungsverfahren ersetzt die Schnittstelle
    
Serializable, die in Zukunft für veraltet
    erklärt werden wird.
   
  
 
  
   Verwendung der array_merge-Funktionen ohne Parameter
   
    Die Funktionen array_merge() und
    array_merge_recursive() können nun auch ohne Parameter
    aufgerufen werden und geben in diesem Fall ein leeres Array zurück. Dies
    ist nützlich in Verbindung mit dem Spread-Operator (Zerlegungsoperator),
    z. B. array_merge(...$arrays).
   
   
  
   
   
    proc_open() akzeptiert für den Befehl nun ein Array
    anstelle einer Zeichenkette. In diesem Fall wird der Prozess direkt
    geöffnet (ohne den Umweg über eine Shell) und PHP kümmert sich bei Bedarf
    darum, die Parameter zu maskieren.
    
   
   
    proc_open() unterstützt nun die Deskriptoren
    redirect und null.
    
   
   
  
   argon2i(d) ohne libargon
   
    Wenn PHP ohne libargon gebaut wird, hat password_hash()
    nun die argon2i- und argon2id-Implementierungen aus der Erweiterung Sodium.