Bei oktalen Integern ist es nun möglich, explizit 0o
    oder 0O als Präfix für numerische Literale anzugeben.
    Dies entspricht der Notation für binäre und hexadezimale Integer-Literale.
    
<?php
014;  // Oktales Literal ohne Präfix
0o14; // Oktales Literal mit Präfix
?>Die Unterstützung für das Entpacken von Arrays mit String-Schlüsseln wurde hinzugefügt.
<?php
$arr1 = [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>Es ist nun möglich, benannte Parameter nach einem entpackten Parameter anzugeben. z. B. foo(...$args, named: $arg).
    Datei-Uploads bieten nun einen zusätzlichen
    full_path-Schlüssel, der den vollständigen Pfad (und
    nicht nur den Basisnamen) der hochgeladenen Datei enthält. Dies ist für
    die Verwendung in Verbindung mit dem HTML-Attribut "webkitdirectory"
    gedacht.
   
Die Unterstützung für Aufzählungen wurde hinzugefügt.
Die Unterstützung für Fibers wurde hinzugefügt.
    Closures für Callback-Funktionen können nun mit
    der Syntax myFunc(...)
    erstellt werden, die identisch ist zu
    Closure::fromCallable('myFunc').
    
   
Hinweis: Das
...ist keine Auslassung, sondern Teil der Syntax.
Die Unterstützung für Schnittmengentypen wurde hinzugefügt.
Schnittmengentypen können nicht zusammen mit zusammengefassten Typen (Union-Typen) verwendet werden.
Der neue Rückgabetyp never wurde hinzugefügt. Dieser zeigt an, dass eine Funktion entweder exit() aufruft, eine Exception auslöst, oder nicht beendet wird.
new in Initialisierungen
    Es ist nun möglich, new ClassName()-Ausdrücke als
    Standardwert für die Initialisierung von Parametern, statischen Variablen
    und globalen Konstanten und als Eigenschafts-Parameter zu verwenden.
    Objekte können nun ebenfalls an define() übergeben
    werden.
    
   
Die Unterstützung für readonly wurde hinzugefügt.
Die Unterstützung für den Modifikator final für Klassenkonstanten wurde hinzugefügt. Außerdem werden Schnittstellenkonstanten standardmäßig überschreibbar.
   Die Option CURLOPT_DOH_URL wurde hinzugefügt.
  
Zusätzliche Optionen für Blob-Zertifikate, falls libcurl >= 7.71.0:
CURLOPT_ISSUERCERT_BLOB
   CURLOPT_PROXY_ISSUERCERT
   CURLOPT_PROXY_ISSUERCERT_BLOB
   CURLOPT_PROXY_SSLCERT_BLOB
   CURLOPT_PROXY_SSLKEY_BLOB
   CURLOPT_SSLCERT_BLOB
   CURLOPT_SSLKEY_BLOB
   Die Klasse CURLStringFile wurde hinzugefügt. Sie kann dazu verwendet werden, statt einer Datei eine Datei aus einem String zu senden:
<?php
$datei = new CURLStringFile($daten, 'dateiname.txt', 'text/plain');
curl_setopt($curl, CURLOPT_POSTFIELDS, ['datei' => $datei]);
?>Ein Openmetrics-Statusformat wurdet hinzugefügt. Es kann von Prometheus verwendet werden, um FPM-Metriken abzurufen.
   Für den dynamischen Prozessmanager wurde eine neue Pool-Option namens
   pm.max_spawn_rate hinzugefügt. Sie ermöglicht ein
   schnelleres Starten einer Anzahl von Kindprozessen, wenn dynamisches PM
   ausgewählt ist. Der Standardwert ist 32, was der
   vorherige fest kodierte Wert war.
  
Wenn libgd mit Avif-Unterstützung gebaut wurde, steht die Unterstützung von Avif nun über die Funktionen imagecreatefromavif() und imageavif() zur Verfügung.
   Die Funktionen hash(), hash_file()
   und hash_init() unterstützen nun zusätzlich den
   optionalen Parameter options, der zur Übergabe von
   Algorithmus-spezifischen Daten verwendet werden kann.
  
    Die Unterstützung für MurmurHash3 mit der Unterstützung
    für Streaming wurde hinzugefügt. Die folgenden Varianten sind
    implementiert:
   
    Der anfängliche Hash-Status kann durch den Schlüssel
    seed im Array options übergeben
    werden, zum Beispiel:
    
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>0 bis zum
    plattformdefinierten UINT_MAX, normalerweise
    4294967295.
   
  
    Die Unterstützung für xxHash wurde hinzugefügt. Die
    folgenden Varianten sind implementiert:
   
    Der anfängliche Hash-Status kann durch den Schlüssel
    seed im Array options übergeben
    werden, zum Beispiel:
    
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>secret im Array
    options ebenfalls unterstützt:
    <?php
$h = hash("xxh3", $data, options: ["secret" => "das Geheimnis muss hier mindestens 136 Bytes lang sein"]);
echo $h, "\n";
?>mysqli.local_infile_directoryDie INI-Direktive mysqli.local_infile_directory wurde hinzugefügt. Sie kann verwendet werden, um ein Verzeichnis anzugeben, aus dem aus dem Dateien geladen werden dürfen. Sie ist nur dann relevant, wenn mysqli.allow_local_infile nicht aktiviert ist, da in diesem Fall alle Verzeichnisse erlaubt sind.
Es ist nun möglich, Parameter zu binden, indem sie als Array an mysqli_stmt::execute() übergeben werden. Alle Werte werden als Zeichenketten gebunden. Nur Listen-Arrays sind erlaubt. Diese neue Funktion ist nicht verfügbar wenn MySQLi mit libmysqlclient kompiliert wurde.
<?php
$stmt = $mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1, $username]);
?>
    Die Methode mysqli_result::fetch_column() wurde
    hinzugefügt, um das Abrufen eines einzelnen skalaren Werts aus der
    Ergebnismenge zu ermöglichen. Die neue Methode akzeptiert den optionalen
    0-basierten Parameter column vom Typ Integer, der
    angibt, aus welcher Spalte abgerufen werden soll.
    
    
<?php
$result = $mysqli->query('SELECT username FROM users WHERE id = 123');
echo $result->fetch_column();
?>
   Die Eigenschaft PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
   wurde hinzugefügt. Damit kann ein Verzeichnis angegeben werden, aus dem
   Dateien geladen werden dürfen. Sie ist nur dann relevant, wenn
   PDO::MYSQL_ATTR_LOCAL_INFILE nicht aktiviert ist, da
   in diesem Fall alle Verzeichnisse erlaubt sind.
  
   Die DSN-Syntax "file:" von SQLite wird nun unterstützt,
   was die Angabe zusätzlicher Flags ermöglicht. Dieses Feature ist nicht
   verfügbar, wenn open_basedir gesetzt ist.
   
<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>
   POSIX_RLIMIT_KQUEUES und
   POSIX_RLIMIT_NPTS wurden hinzugefügt. Diese rlimits
   sind nur unter FreeBSD verfügbar.
  
   Die Funktion fputcsv() akzeptiert nun den neuen
   Parameter eol, mit dem eine eigene Sequenz für das
   Zeilenende definiert werden kann. Die Vorgabe bleibt dieselbe wie bisher:
   "\n".
  
   Die Methode SplFileObject::fputcsv() akzeptiert nun
   den neuen Parameter eol, mit dem eine eigene Sequenz
   für das Zeilenende definiert werden kann. Die Vorgabe bleibt dieselbe wie
   bisher: "\n".
  
