Les entiers octaux peuvent maintenant utiliser un préfixe explicite
0o
/0O
dans les littéraux d'entiers,
de manière similaire aux littéraux d'entiers binaires et hexadécimaux.
<?php
014; // Littéral octal sans préfixe
0o14; // Littéral octal préfixé
?>
Ajout du support pour La décompression de tableau avec des clés chaines de caractères.
<?php
$arr1 = [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>
Il est désormais possible de spécifier des arguments nommés après une décompression d'argument. par exemple : foo(...$args, named: $arg).
Les téléchargements de fichiers fournissent désormais une clé full_path
supplémentaire,
qui contient le chemin complet (plutôt que juste le nom de base) du fichier téléchargé.
Ceci est destiné à être utilisé en conjonction avec "upload webkitdirectory".
Le support pour les énumérations a été ajouté.
Le support pour les fibres a été ajouté.
Les fermetures pour les callables peuvent maintenant être créées en utilisant la syntaxe myFunc(...)
,
qui est identique à Closure::fromCallable('myFunc')
.
Note: Le
...
fait partie de la syntaxe, et non une omission.
Le support pour les intersection de types a été ajouté.
Les types d'intersection ne peuvent pas être utilisés avec les types d'union
Un nouveau type de retour never a été ajouté. Cela indique qu'une fonction soit exit(), lance une exception, ou ne se termine pas.
new
dans les initialiseurs
Il est désormais possible d'utiliser des expressions new ClassName()
comme
valeur par défaut d'un paramètre, d'une variable statique, d'initialisateurs de constantes globales,
et comme arguments d'attribut.
Les objets peuvent également être passés à define() maintenant.
Le support pour la lecture seule a été ajouté.
Ajout du support pour le modificateur final pour les constantes de classes. Aussi, les constantes d'interface deviennent surchargeables par défaut.
Ajout de l'option CURLOPT_DOH_URL
.
Ajout des options pour les certificats blob lorsque 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
Ajout de CURLStringFile, qui peut être utilisé pour envoyer un fichier à partir d'une chaîne de caractères plutôt qu'un fichier:
<?php
$file = new CURLStringFile($data, 'filename.txt', 'text/plain');
curl_setopt($curl, CURLOPT_POSTFIELDS, ['file' => $file]);
?>
Ajout du format de statut openmetrics. Il peut être utilisé par Prometheus pour récupérer les métriques FPM.
Ajout d'une nouvelle option de pool pour le gestionnaire de processus dynamique appelée
pm.max_spawn_rate
. Elle permet de démarrer un nombre d'enfants
à un rythme plus rapide lorsque le gestionnaire de processus dynamique est sélectionné.
La valeur par défaut est 32
qui était la valeur précédente
codée en dur.
Le support Avif est maintenant disponible via imagecreatefromavif() et imageavif(), si libgd a été compilé avec le support Avif.
Les fonctions suivantes hash(),
hash_file(), et hash_init()
supportent maintenant un nouveau argument optionel options
,
qui peut être utilisé pour passer des données spécifiques à l'algorithme.
Ajout du support pour MurmurHash3
avec support de streaming.
Les variantes suivantes sont implémentées:
L'état de hachage initial peut être passé via la clé seed
dans le tableau options
, par exemple:
<?php
$h = hash("murmur3f", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
0
à la UINT_MAX
définie par la plateforme, généralement
4294967295
.
Ajout du support pour xxHash
.
Les variantes suivantes sont implémentées:
L'état de hachage initial peut être passé via la clé seed
dans le tableau options
, par exemple:
<?php
$h = hash("xxh3", $data, options: ["seed" => 42]);
echo $h, "\n";
?>
secret
dans le tableau options
, aussi :
<?php
$h = hash("xxh3", $data, options: ["secret" => "at least 136 bytes long secret here"]);
echo $h, "\n";
?>
mysqli.local_infile_directory
La directive INI mysqli.local_infile_directory a été ajoutée, qui peut être utilisée pour spécifier un répertoire à partir duquel les fichiers sont autorisés à être chargés. Elle n'a de sens que si mysqli.allow_local_infile n'est pas activé, car tous les répertoires sont autorisés dans ce cas.
Il est désormais possible d'affecter des paramètres en les passant comme un tableau à mysqli_stmt::execute(). Toutes les valeurs seront affectées en tant que chaînes de caractères. Seuls les tableaux de liste sont autorisés. Cette nouvelle fonctionnalité n'est pas disponible lorsque MySQLi est compilé avec libmysqlclient.
<?php
$stmt = $mysqli->prepare('INSERT INTO users(id, name) VALUES(?,?)');
$stmt->execute([1, $username]);
?>
mysqli_result::fetch_column()
a été ajouté pour permettre de récupérer une seule valeur scalaire du jeu de résultats.
La nouvelle méthode accepte un paramètre de colonne facultatif column
basé sur 0
de type entier spécifiant quelle colonne récupérer.
<?php
$result = $mysqli->query('SELECT username FROM users WHERE id = 123');
echo $result->fetch_column();
?>
L'attribut PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY
a été ajouté,
qui peut être utilisé pour spécifier un répertoire à partir duquel les fichiers
sont autorisés à être chargés.
Elle n'a de sens que si PDO::MYSQL_ATTR_LOCAL_INFILE
n'est pas activé, car tous les répertoires sont autorisés dans ce cas.
La syntaxe DSN "file:"
de SQLite est maintenant supportée,
ce qui permet de spécifier des drapeaux supplémentaires.
Cette fonctionnalité n'est pas disponible si open_basedir est défini.
<?php
new PDO('sqlite:file:path/to/sqlite.db?mode=ro')
?>
Ajout de POSIX_RLIMIT_KQUEUES
et POSIX_RLIMIT_NPTS
.
Ces limites soft et hard ne sont disponibles que sur FreeBSD.
fputcsv() accepte désormais un nouveau argument
eol
qui permet de définir une séquence
de fin de ligne personnalisée, la valeur par défaut reste la même et est "\n"
.
SplFileObject::fputcsv() accepte désormais un nouveau argument
eol
qui permet de définir une séquence
de fin de ligne personnalisée, la valeur par défaut reste la même et est "\n"
.