Nouvelles Fonctionnalités

PHP Core

Préfixe littéral octal entier

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é
?>

La décompression de tableau avec des clés chaßnes de caractÚres

Ajout du support pour La décompression de tableau avec des clés chaßnes de caractÚres.

<?php
$arr1
= [1, 'a' => 'b'];
$arr2 = [...$arr1, 'c' => 'd']; //[1, 'a' => 'b', 'c' => 'd']
?>

Argument nommé aprÚs une décompression d'argument

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).

Clé de chemin complet pour les téléchargements de fichiers

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".

Enumerations

Le support pour les énumérations a été ajouté.

Fibers

Le support pour les fibres a été ajouté.

Syntaxe de callable de premiĂšre classe

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.

Intersection de types

Le support pour les intersection de types a été ajouté.

Attention

Les types d'intersection ne peuvent pas ĂȘtre utilisĂ©s avec les types d'union

Le type never

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.

Les propriétés en lecture seule

Le support pour la lecture seule a été ajouté.

Les constantes de classe finales

Ajout du support pour le modificateur final pour les constantes de classes. Aussi, les constantes d'interface deviennent surchargeables par défaut.

CURL

Ajout de l'option CURLOPT_DOH_URL.

Ajout des options pour les certificats blob lorsque libcurl >= 7.71.0:

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]);
?>

FPM

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.

GD

Le support Avif est maintenant disponible via imagecreatefromavif() et imageavif(), si libgd a été compilé avec le support Avif.

Hash

Les fonctions suivantes hash(), hash_file(), et hash_init() supportent maintenant un nouvel argument optionnel options, qui peut ĂȘtre utilisĂ© pour passer des donnĂ©es spĂ©cifiques Ă  l'algorithme.

MurmurHash3

Ajout du support pour MurmurHash3 avec support de streaming. Les variantes suivantes sont implémentées:

  • murmur3a, 32-bit hash
  • murmur3c, 128-bit hash for x86
  • murmur3f, 128-bit hash for x64

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";
?>
Une valeur de graine valide est dans la plage de 0 à la UINT_MAX définie par la plateforme, généralement 4294967295.

xxHash

Ajout du support pour xxHash. Les variantes suivantes sont implémentées:

  • xxh32, 32-bit hash
  • xxh64, 64-bit hash
  • xxh3, 64-bit hash
  • xxh128, 128-bit hash

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";
?>
L'usage secret est supporté en passant la clé secret dans le tableau options, aussi :
<?php
$h
= hash("xxh3", $data, options: ["secret" => "at least 136 bytes long secret here"]);
echo
$h, "\n";
?>
La qualité du secret personnalisé est cruciale pour la qualité du hachage résultant. Il est fortement recommandé d'utiliser la meilleure entropie possible.

MySQLi

Nouvelle directive INI 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.

Affecter des paramĂštres dans execute

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]);
?>

Nouvelle méthode mysqli_result::fetch_column()

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();
?>

PDO

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.

PDO_SQLite

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')
?>

POSIX

Ajout de POSIX_RLIMIT_KQUEUES et POSIX_RLIMIT_NPTS. Ces limites soft et hard ne sont disponibles que sur FreeBSD.

Standard

fputcsv() accepte dĂ©sormais un nouvel 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".

SPL

SplFileObject::fputcsv() accepte dĂ©sormais un nouvel 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".

add a note

User Contributed Notes

There are no user contributed notes for this page.