Ajout de l'opérateur pipe
(|>).
<?php
$result = "Hello World" |> strlen(...);
print $result . PHP_EOL; // Affiche "11"Ajout du support pour Closures et callable de première classes dans les expressions constantes. Cela inclus :
Ajout de l'attribut NoDiscard pour indiquer que la valeur de retour d'une fonction est importante et doit être utilisée.
Par ailleurs, ajout du cast (void) pour indiquer que le fait de ne pas utiliser une valeur est intentionnel.
Le cast (void) n'a pas d'effet sur l'exécution du programme en soi, mais
il peut être utilisé pour supprimer les avertissements émis par #[\NoDiscard] et éventuellement
aussi les diagnostics émis par des IDE externes ou des outils d'analyse statique.
<?php
#[\NoDiscard]
function concat(string $a, string $b): string {
return a + b;
}
// Attention : La valeur de retour de la fonction concat() doit être utilisée ou
// intentionnellement ignorée en la castant en (void) dans xxx.php
concat("a", "b");
// Aucun avertissement, car la valeur de retour est utilisée par l'affectation.
$results = concat("a", "b");
// Aucun avertissement, car le cast (void) est utilisé.
(void)concat("a", "b");
Ajout du support des attributes sur les constantes non liées à une classe au moment de la compilation
(par ex. const MA_CONST = 1; plutôt que
define('MA_CONST', 1);).
L'attribut Deprecated peut désormais être utilisé sur les constantes.
#[\DelayedTargetValidation]Le nouvel attribut DelayedTargetValidation peut être utilisé pour supprimer les erreurs de compilation provenant des attributs du core (ou des extensions) qui sont utilisés sur des cibles invalides. Ces erreurs sont plutôt signalées à l'exécution si et quand ReflectionAttribute::newInstance() est appelé.
#[\Override] pour les propriétésL'attribut Override peut désormais être appliqué aux propriétés.
Ajout su support de visibilité asymétriques pour les propriétés statiques.
Les erreurs fatales (tel que un dépassement du temps d'exécution maximum) incluent désormais une trace de retour.
La Promotion des propriétés du constructeur peut désormais être utilisée pour les propriétés finales.
Ajout du support des casts dans les expressions constantes.
<?php
const T1 = (int) 0.3; // Avant: "Fatal error: Constant expression contains invalid operations"
print T1 . PHP_EOL; // Affiche "0"La construction de langage clone est désormais une fonction et prend en charge la réaffectation des propriétés (readonly) lors du clonage via le nouveau paramètre $withProperties.
Ajout du support pour gestionnaires de partage qui sont persistés à travers plusieurs requêtes PHP, permettant en toute sécurité une réutilisation plus efficace des connexions.
Ajout du support pour CURLINFO_USED_PROXY (libcurl >= 8.7.0),
CURLINFO_HTTPAUTH_USED,
et CURLINFO_PROXYAUTH_USED (libcurl >= 8.12.0)
à la fonction curl_getinfo().
Lorsque curl_getinfo() renvoie un tableau, les mêmes informations
sont disponibles sous les clés "used_proxy",
"httpauth_used", et "proxyauth_used".
CURLINFO_USED_PROXY reçoit la valeur zéro si aucun proxy n'a été utilisé lors du
transfert précédent ou une valeur non nulle si un proxy a été utilisé.
CURLINFO_HTTPAUTH_USED et
CURLINFO_PROXYAUTH_USED reçoivent des masques de bits
indiquant les méthodes d'authentification HTTP et proxy qui ont été
utilisées lors de la requête précédente.
Voir les constantes CURLAUTH_* pour
les valeurs possibles.
Ajout de l'option Curl CURLOPT_INFILESIZE_LARGE, qui est un remplacement sûr
pour CURLOPT_INFILESIZE. Sur certains systèmes,
CURLOPT_INFILESIZE n'accepte qu'un entier signé 32 bits comme
taille de fichier (2,0 Gio) même sur les systèmes 64 bits.
CURLOPT_INFILESIZE_LARGE accepte la plus grande valeur entière
the system can handle.
Ajout des valeurs CURLFOLLOW_OBEYCODE,
CURLFOLLOW_FIRSTONLY et CURLFOLLOW_ALL
pour l'option CURLOPT_FOLLOWLOCATION
de la fonction curl_setopt().
CURLFOLLOW_OBEYCODE pour suivre plus strictement en ce qui concerne
les redirections si elles sont autorisées.
CURLFOLLOW_FIRSTONLY pour ne suivre que la première redirection, ainsi
si une redirection de suivi existe, elle ne sera pas suivie davantage.
CURLFOLLOW_ALL est équivalent à définir
CURLOPT_FOLLOWLOCATION sur true.
Ajout du support pour CURLINFO_CONN_ID (libcurl >= 8.2.0)
à la fonction curl_getinfo(). Cette constante permet de récupérer
l'ID unique de la connexion utilisée par un transfert cURL. Elle est principalement
utile lorsque la réutilisation de connexion ou la logique de pool de connexions est nécessaire dans
les applications au niveau PHP. Lorsque curl_getinfo() renvoie un tableau,
cette valeur est disponible sous la clé "conn_id".
Ajout du support pour CURLINFO_QUEUE_TIME_T (libcurl >= 8.6.0)
à la fonction curl_getinfo(). Cette constante permet de récupérer
le temps (en microsecondes) que la requête a passé dans la file d'attente de connexion
de libcurl avant d'être envoyée.
Cette valeur peut également être récupérée en passant
CURLINFO_QUEUE_TIME_T au paramètre option
de curl_getinfo().
Ajout du support pour CURLOPT_SSL_SIGNATURE_ALGORITHMS
pour spécifier les algorithmes de signature à utiliser pour TLS.
Ajouter de Dom\Element::$outerHTML.
Ajout de la propriété $children aux implémentations de Dom\ParentNode.
Ajout du support pour les tags Exif OffsetTime*.
Ajout du support pour HEIF/HEIC.
Ajout du nouveau drapeau FILTER_THROW_ON_FAILURE qui peut être
passé aux fonctions de filtrage et qui forcera le déclenchement d'une exception
lorsque la validation échoue.
Le nouveau drapeau ne peut pas être combiné avec
FILTER_NULL_ON_FAILURE; essayer de le faire entraînera
en une TypeError levée.
Ajout des constantes de classes NumberFormatter::CURRENCY_ISO,
NumberFormatter::CURRENCY_PLURAL,
NumberFormatter::CASH_CURRENCY,
et NumberFormatter::CURRENCY_STANDARD
pour divers styles de formatage des devises.
Ajout de Locale::addLikelySubtags() et Locale::minimizeSubtags() pour gérer les tags probables sur une locale donnée.
Ajout de la classe IntlListFormatter pour formater, ordonner,
et ponctuer une liste d'éléments avec une locale donnée, les opérandes
IntlListFormatter::TYPE_AND,
IntlListFormatter::TYPE_OR,
IntlListFormatter::TYPE_UNITS et les longueurs
IntlListFormatter::WIDTH_WIDE,
IntlListFormatter::WIDTH_SHORT et
IntlListFormatter::WIDTH_NARROW.
Il est supporté à partir de icu 67.
Ajout des constantes de classes Pdo\Sqlite::ATTR_BUSY_STATEMENT
Ajout des constantes de classes Pdo\Sqlite::ATTR_EXPLAIN_STATEMENT,
Pdo\Sqlite::EXPLAIN_MODE_PREPARED,
Pdo\Sqlite::EXPLAIN_MODE_EXPLAIN,
Pdo\Sqlite::EXPLAIN_MODE_EXPLAIN_QUERY_PLAN.
Ajout de l'attribut de connexion Pdo\Sqlite::ATTR_TRANSACTION_MODE
avec les valeurs possibles Pdo\Sqlite::TRANSACTION_MODE_DEFERRED,
Pdo\Sqlite::TRANSACTION_MODE_IMMEDIATE,
et Pdo\Sqlite::TRANSACTION_MODE_EXCLUSIVE,
permettant de configurer le mode de transaction à utiliser lors de l'appel de beginTransaction().
session_set_cookie_params(),
session_get_cookie_params(),
et session_start() supporte désormais les cookies partitionnés
avec la clé "partitioned".
Les cas d'énumération sont désormais inclus dans SoapClient::__getTypes().
Ajout du support de l'attribut xml:lang du texte Reason de Soap 1.2.
La signature de SoapFault::__construct() et
SoapServer::fault() inclut désormais un paramètre
optionnel $lang.
Ceci résout la compatibilité avec les clients SOAP .NET.
mail() renvoie désormais l'erreur réelle de sendmail et détecte si le processus sendmail a été terminé de manière inattendue. Dans de tels cas, un avertissement est émis et la fonction renvoie false. Auparavant, ces erreurs étaient silencieusement ignorées. Ce changement n'affecte que le transport sendmail.
getimagesize() supporte désormais les images HEIF/HEIC.
getimagesize() supporte désormais les images SVG lorsque l'extension ext-libxml est également chargée. De même, image_type_to_extension() et image_type_to_mime_type() gèrent désormais également IMAGETYPE_SVG.
Le tableau renvoyé par getimagesize() contient désormais deux entrées supplémentaires :
"width_unit" et "height_unit" pour indiquer dans
quelles unités les dimensions sont exprimées. Ces unités sont px par défaut. Elles ne sont pas
nécessairement les mêmes (juste pour donner un exemple : l'une peut être en cm et l'autre en px).
setcookie() et setrawcookie() supportent désormais la
clé "partitioned".
Une extension uri toujours activée a été ajoutée et peut être utilisée pour gérer les URI et les URL conformément à la RFC 3986 et à WHATWG URL.
L'argument $namespace de XSLTProcessor::getParameter(),
XSLTProcessor::setParameter() et
XSLTProcessor::removeParameter() fonctionne désormais réellement
au lieu d'être traité comme vide.
Cela ne fonctionne que si l'argument $name n'utilise pas la notation Clark et n'est pas un
QName car dans ces cas, l'espace de noms est pris à partir de l'href ou du préfixe de l'espace
de noms respectivement.
flock() est désormais pris en charge sur les flux zlib. Auparavant, cela échouait toujours à effectuer toute action de verrouillage.