Autres changements

Changements du cœur

Core

En cas de condition OOM (mémoire insuffisante) fatale, PHP appelle désormais abort() au lieu de exit(1), ce qui change le code de sortie en 134 et peut créer un core dump.

La constante PHP_OS_FAMILY a une valeur AIX lors de l'exécution sur AIX ou IBM i via PASE.

Changements dans les modules SAPI

CLI

Le serveur de développement intégré accepte désormais les requêtes utilisant la méthode HTTP QUERY au lieu de retourner 501 Not Implemented.

Le serveur de développement intégré ne reflète plus l'en-tête Host des requêtes.

Fonctions modifiées

Core

header_register_callback() déclare désormais true comme type de retour. Elle ne peut plus retourner false à partir de PHP 8.0.0, date à laquelle le passage d'une fonction de rappel invalide a commencé à lancer une TypeError.

register_tick_function() déclare désormais true comme type de retour. Elle a toujours retourné true en cas de succès ; une fonction de rappel invalide lance une TypeError lors de l'analyse des arguments, avant que le corps de la fonction ne soit atteint.

ini_get_all() inclut désormais un élément "builtin_default_value" pour chaque directive lorsque details vaut true. Il contient la valeur par défaut intégrée de la directive (ou null si elle n'en a pas), indépendamment des valeurs définies dans php.ini, en ligne de commande ou à l'exécution.

fclose(), file_put_contents() et copy() retournent désormais false lorsque le vidage ou la fermeture du flux échoue. Auparavant, de tels échecs étaient silencieusement ignorés.

Filter

Le type de retour de filter_var_array() a été restreint de array|false|null à array|false. La fonction établit toujours un tableau avant de filtrer, null n'était donc jamais retourné. filter_input_array() n'est pas affectée : elle retourne toujours null lorsque la superglobale demandée n'existe pas.

LDAP

Le type de retour de ldap_free_result() a été restreint de bool à true. La fonction retournait déjà toujours true.

MySQLi

La structure retournée par mysqli_get_charset() ne contient plus l'élément non documenté "comment". La valeur de "charsetnr" est désormais fixée à la constante 0, car ce numéro était un détail d'implémentation qui n'aurait pas dû être exposé publiquement.

OpenSSL

La sortie de openssl_x509_parse() contient désormais une entrée "criticalExtensions" listant toutes les extensions critiques du certificat.

openssl_sign() et openssl_verify() ont désormais un argument optionnel supplémentaire salt_length qui permet de contrôler la longueur du sel RSA-PSS lorsque OPENSSL_PKCS1_PSS_PADDING est utilisé. Il accepte une longueur explicite ou l'une des nouvelles constantes OPENSSL_RSA_PSS_SALTLEN_*.

PDO_DBLIB

Lors de l'utilisation de connexions persistantes, une vérification de disponibilité de la connexion est désormais effectuée dans PDO::__construct().

Phar

Phar::mungServer() prend désormais en charge les valeurs par référence.

Readline

readline_completion_function() déclare désormais true comme type de retour. Elle a toujours retourné true en cas de succès ; une fonction de rappel invalide lance une TypeError lors de l'analyse des arguments, avant que le corps de la fonction ne soit atteint.

Reflection

Les sorties de ReflectionClassConstant::__toString() et de ReflectionConstant::__toString() affichent désormais les valeurs de constantes bool sous la forme true et false plutôt que 1 et une chaîne vide. Cela affecte également d'autres façons d'afficher les constantes de classe, par ex. ReflectionClass::__toString().

Sockets

socket_addrinfo_lookup() a désormais un argument optionnel supplémentaire error_code qui, lorsqu'il n'est pas null, reçoit le code d'erreur en cas d'échec (l'une des constantes EAI_*).

Le type de retour de socket_cmsg_space() a été restreint de ?int à int. Tous les chemins d'échec lancent une ValueError à partir de PHP 8.0.0, null n'était donc jamais retourné.

Zip

Le type de retour de zip_entry_close() a été restreint de bool à true. La fonction retournait déjà toujours true.

Autres changements aux extensions

Fileinfo

Mise à jour vers file 5.48. Les bases de données magic compilées sur mesure avec d'anciennes versions de file doivent être régénérées.

Hash

La version intégrée de xxHash a été mise à jour vers 0.8.2.

MySQLi

Ajout de la nouvelle constante MYSQLI_OPT_COMPRESS.

Opcache

Le JIT est désormais pris en charge pour les compilations ZTS sur Apple Silicon.

Changements dans la gestion des fichiers INI

Core

L'option INI error_include_args a été ajoutée pour rendre cohérent l'affichage des arguments de fonction dans les erreurs ; elle est désactivée par défaut. Auparavant, le fait qu'une fonction affiche un paramètre dans l'erreur dépendait de chaque appel à la fonction d'erreur interne. Désormais, tous les paramètres tels qu'ils ont réellement été passés à la fonction seront affichés. Cela utilise la même infrastructure que les traces d'appels : les paramètres sensibles ne seront donc pas affichés, et les chaînes seront tronquées selon zend.exception_string_param_max_len.

MBString

La directive INI mbstring.detect_order met désormais à jour l'ordre de détection interne lorsqu'elle est modifiée à l'exécution via ini_set(). Auparavant, les modifications à l'exécution avec ini_set() n'avaient aucun effet sur mb_detect_order(). Définir la directive à null ou à une chaîne vide à l'exécution laisse désormais inchangé l'ordre de détection précédemment configuré.

MySQLi

mysqli.default_port vérifie désormais la validité de la valeur, qui doit être comprise entre 0 et 65535 inclus.

Opcache

opcache.jit_debug accepte un nouveau drapeau : ZEND_JIT_DEBUG_TRACE_EXIT_INFO_SRC. Lorsqu'il est utilisé avec ZEND_JIT_DEBUG_TRACE_EXIT_INFO, la source des points de sortie est affichée dans les informations de sortie, dans les compilations de débogage.

Performance

Core

printf() n'utilisant que %s et %d sera compilée en l'interpolation de chaîne équivalente, évitant le coût d'un appel de fonction et l'analyse répétée de la chaîne de format.

Les arguments sont désormais passés plus efficacement aux constructeurs connus (par ex. lors de l'utilisation de new self()).

array_map() utilisant comme fonction de rappel un callable de première classe ou une application partielle de fonction sera compilée en la boucle foreach équivalente, évitant la création de Closure intermédiaires et le coût de l'appel de fonctions de rappel utilisateur depuis des fonctions internes, et offrant une meilleure visibilité au JIT.

Les performances de la VM TAILCALL ont été améliorées, et elle est désormais activée sous Windows lors de la compilation avec Clang 19 ou ultérieur sur x86_64.

Les performances des compilations ZTS ont été améliorées.

Ajout d'un cache de fermetures sans état.

Le code profondément récursif qui amène la VM à allouer de nouvelles pages de pile devrait désormais être plus rapide.

Amélioration des performances du tri des tableaux à un seul élément.

Amélioration des performances des fonctions suivantes :

DOM

DOMText::splitText() et Dom\Text::splitText() sont plus rapides et consomment moins de mémoire.

GD

imagebmp(), imagewbmp(), imagegd() et imagegd2() mettent désormais la sortie en tampon lors de l'écriture vers des flux PHP, ce qui améliore significativement les performances d'écriture des images dans des fichiers.

Amélioration des performances de imagegrabscreen() et imagegrabwindow() sous Windows.

Intl

Amélioration des performances de IntlCalendar::getAvailableLocales() et de IntlDateFormatter::localtime()/datefmt_localtime() grâce à la préallocation des tableaux qu'elles retournent.

Amélioration des performances de transliterator_list_ids() et de resourcebundle_locales() grâce à la préallocation des tableaux qu'elles retournent.

Optimisation de l'appel de la fonction de rappel dans IntlChar::enumCharTypes().

JSON

Amélioration des performances de l'encodage des tableaux et des objets.

Amélioration des performances de la génération de l'indentation dans json_encode() lors de l'utilisation de JSON_PRETTY_PRINT.

MBString

Amélioration des performances de mb_str_pad().

Phar

Réduction des allocations temporaires lors de l'itération sur les répertoires Phar.

URI

Amélioration des performances de Uri\WhatWg\Url::parse() lors de la collecte des erreurs de validation grâce à la préallocation du tableau d'erreurs.

Réduction des allocations lors de la lecture des hôtes IPv6/IPvFuture et des chemins avec Uri\Rfc3986\Uri.

Amélioration des performances et de la consommation de mémoire lors de l'utilisation des accesseurs normalisants (non bruts) sur des URI déjà normalisées avec Uri\Rfc3986\Uri.

Zip

Amélioration des performances de ZipArchive::addGlob() et de ZipArchive::addPattern() grâce à la préallocation des tableaux qu'elles retournent.

Les copies de chaînes sont évitées dans ZipArchive::addFromString().

+add a note

User Contributed Notes

There are no user contributed notes for this page.