PHP 8.4.1 Released!

Autres changements

Changements du cœur

Le type iterable est maintenant un alias intégré à la compilation pour le type array|Traversable. Les messages d'erreur relatifs à iterable utiliseront donc array|Traversable. La réflexion sur le type est préservée pour les simples iterable (et ?iterable) pour produire une classe ReflectionNamedType avec le nom iterable, cependant, l'utilisation de iterable dans les types union sera converti en array|Traversable.

Le format de date des cookies envoyés est désormais 'D, d M Y H:i:s \G\M\T'; auparavant, il était 'D, d-M-Y H:i:s T'.

Changements dans les modules SAPI

CLI

Les flux STDOUT, STDERR et STDIN ne sont plus fermés lors de la destruction des ressources ce qui est généralement le cas lorsque le CLI se termine. Il est cependant toujours possible de fermer explicitement ces flux en utilisant fclose() et similaires.

Fonctions modifiées

Cœur

Les fonctions strcmp(), strcasecmp(), strncmp(), strncasecmp() et substr_compare(), utilisant la comparaison de chaînes binaire sécurisée, ne garantissent plus de retourner strlen($string1) - strlen($string2) lorsque les longueurs des chaînes ne sont pas égales, mais peuvent maintenant retourner -1 ou 1 à la place. Au lieu de dépendre d'une valeur concrète, la valeur de retour doit être comparée à 0.

DBA

dba_open() et dba_popen() ont désormais la signature enforcée suivante :

dba_open(
    string $path,
    string $mode,
    ?string $handler = null,
    int $permission = 0644,
    int $map_size = 0,
    ?int $flags = null
): resource|false

l'argument optionnel skip de dba_fetch() est maintenant à la fin en accord avec la sémantique de PHP. Sa signature est désormais :

dba_fetch(string|array $key, resource $handle, int $skip): string|false
La signature surchargée :
dba_fetch(string|array $key, int $skip, resource $handle): string|false
est toujours acceptée, mais il est recommandé d'utiliser la nouvelle variante standard.

Random

random_bytes() et random_int() lancent désormais \Random\RandomException en cas d'échec du CSPRNG. Auparavant, une simple \Exception était lancée à la place.

SPL

Le paramètre iterator de iterator_to_array() et iterator_count() est étendu à iterable au lieu de Iterator, ce qui permet de transmettre des tableaux.

Autres modifications apportées aux extensions

Date

Les propriétés de DatePeriod sont désormais correctement déclarées.

Intl

Les instances de IntlBreakIterator, IntlRuleBasedBreakIterator, IntlCodePointBreakIterator, IntlPartsIterator, IntlCalendar, Collator, IntlIterator, UConverter, IntlDateFormatter, IntlDatePatternGenerator, MessageFormatter, ResourceBundle, Spoofchecker, IntlTimeZone, et Transliterator ne sont plus sérialisables. Auparavant, elles pouvaient être sérialisés, mais la désérialisation produisait des objets inutilisables ou échouait.

MySQLi

Le support de libmysql a été supprimé et il n'est plus possible de compiler mysqli avec libmysql. Désormais, l'extension mysqli ne peut être compilée qu'avec mysqlnd. Toutes les fonctionnalités de libmysql non disponibles dans mysqlnd ont été supprimées :

OCI8

La version minimale requise de la bibliothèque Oracle Client est désormais 11.2.

PCRE

Les caractères NUL (\0) dans les chaînes de motifs sont maintenant supportés.

Session

Essayer de modifier le session.cookie_samesite alors que la session est active ou que la sortie a déjà été envoyée échouera désormais et émettra un avertissement. Le comportement est ainsi aligné sur tous les autres paramètres INI de session.

SQLite3

sqlite3.defensive est maintenant INI_USER.

Standard

getimagesize() indique désormais les dimensions réelles de l'image, bits et canaux des images AVIF. Auparavant, les dimensions étaient indiquées sous la forme 0x0, et les bits et les canaux n'étaient pas indiqués du tout.

Tidy

Les propriétés de la classe tidy sont désormais correctement déclarées. Et celles de la classe tidyNode sont maintenant correctement déclarées en lecture seule.

Zip

L'extension Zip a été mise à jour à la version 1.20.0, qui ajoute les méthodes suivantes :

Changements dans la gestion des fichiers INI

La prise en charge des préfixes binaires (0b/0B) et octaux (0o/0O) a été ajoutée aux paramètres INI pour les nombres entiers. Les paramètres INI entiers qui commencent par un zéro (0) continuent d'être interprétés comme des nombres entiers octaux.

L'analyse de certaines valeurs mal formatées déclenche désormais un avertissement alors qu'elle était auparavant ignorée silencieusement. Pour des raisons de compatibilité ascendante, l'interprétation de ces valeurs n'a pas changé. Cela affecte les paramètres suivants :

add a note

User Contributed Notes

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