PHP 8.4.1 Released!

Autres changements

Notices et avertisements sur opérations arithmétiques avec chaînes invalides

Des nouvelles erreurs E_WARNING et E_NOTICE ont été introduites quand des chaîne de caractères invalides sont contraintes en utilisant des opérateurs s'attendant à des nombres (+ - * / ** % << >> | & ^) ou leurs assignements équivalents. Une E_NOTICE est émise quand la chaîne de caractères commence avec une valeur numérique mais contient des caractères non numériques de fin, et une E_WARNING est émise quand la chaîne de caractères ne contient pas une valeur numérique.

<?php
'1b' + 'something';

L'exemple ci-dessus va afficher :

Notice: A non well formed numeric value encountered in %s on line %d
Warning: A non-numeric value encountered in %s on line %d

Avertissement en cas de débordement de la séquence d'échappement octale

Auparavant, les séquences d'échappement de chaîne octale de 3 octets débordaient silencieusement. Désormais, elles déborderont toujours, mais une E_WARNING sera émise.

<?php
var_dump
("\500");

L'exemple ci-dessus va afficher :

Warning: Octal escape sequence overflow \500 is greater than \377 in %s on line %d
string(1) "@"

Correction des incohérences de $this

Bien que $this soit considérée comme une variable spéciale en PHP, il lui manquait des contrôles appropriés pour s'assurer qu'elle n'était pas utilisée comme nom de variable ou réassignée. Ceci a été désormais rectifié pour s'assurer que $this ne peut pas être une variable définie par l'utilisateur, réassignée à une différente valeur ou globalisée.

Génération d'ID de session sans hachage

Les IDs de session ne seront plus hachés dès la génération. Avec ce changement ceci amène à la suppression des quatres paramètres ini suivants :

  • session.entropy_file
  • session.entropy_length
  • session.hash_function
  • session.hash_bits_per_character

Et l'addition des deux paramètres ini suivants :

  • session.sid_length - définit la longueur de l'ID de session, par défaut 32 caractères pour la rétrocompatibilité.
  • session.sid_bits_per_character - définit le nombre de bits à enregistrer par caractère (c.à.d augmente l'intervale de caractères qui peuvent être utilisés dans l'ID de session), par défaut 4 pour la rétrocompatibilité.

Modifications apportées à la gestion des fichiers INI

precision

Si la valeur est définit à -1, alors le mode dtoa 0 est utilisé. La valeur par défaut est toujours 14.

serialize_precision

Si la valeur est définie à -1, alors le mode dtoa 0 est utilisé. La valeur -1 est désormais utilisée par défaut.

gd.jpeg_ignore_warning

La valeur par défaut de ce paramètre php.ini a été modifiée à 1, donc par défaut les avertissements libjpeg sont ignorés.

opcache.enable_cli

La valeur par défaut de ce paramètre php.ini a été modifiée à 1 (activé) en PHP 7.1.2, et retour à 0 (désactivé) en PHP 7.1.7.

Génération des IDs de sessions seulement avec un CSPRNG

Les IDs de sessions seront désormais seulement générés avec un CSPRNG (Crypto Secure Pseudo Random Number Generator)

Des messages TypeError plus informatifs quand null est permis

Les exceptions TypeError pour les vérifications de type arg_info fourniront désormais des messages d'erreurs plus informatifs. Si le type du paramètre ou le type de retour accepte null (soit en ayant une valeur par défaut de null soit en étant un type nullable), alors le message d'erreur mentionnera désormais ceci avec un message "must be ... or null" ou "must ... or be null."

add a note

User Contributed Notes 1 note

up
6
Ta7To7
6 years ago
Note that using Incrementing/Decrementing operators on string is legal
<?php
$str
= "";
echo ++
$str; // output: 1
?>
To Top