PHP Conference Nagoya 2025

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 chaines de caractères

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

Argument nommé apres 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 nouveau argument optionel 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";
?>
Un 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 INImysqli.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 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".

SPL

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

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top