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.
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 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_directory
¶Die 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"
.