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'
.
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.
Les fonctions strcmp(), strcasecmp(),
strncmp(), strncasecmp(), et
substr_compare(), qui utilisent une comparaison binaire sûre
des chaînes de caractères, retournent désormais -1
, 0
et 1
.
dba_open() et dba_popen() ont désormais la signature enforcée suivante :
$path
,$mode
,$handler
= null
,$permission
= 0644,$map_size
= 0,$flags
= null
l'argument optionnel skip de dba_fetch() est maintenant à la fin en accord avec la sémantique de PHP. Sa signature est désormais :
La signature surchargée : est toujours acceptée, mais il est recommandé d'utiliser la nouvelle variante standard.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.
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.
Les propriétés de DatePeriod sont désormais correctement déclarées.
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.
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 :
MYSQLI_IS_MARIADB
est obsolèteLa version minimale requise de la bibliothèque Oracle Client est désormais 11.2.
Les caractères NUL (\0
) dans les chaînes de motifs sont maintenant supportés.
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.defensive
est maintenant INI_USER
.
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.
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.
L'extension Zip a été mise à jour à la version 1.20.0, qui ajoute les méthodes suivantes :
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 :