(\?[^php]).*(\:).*(\?).*(\:[^=])
Above regex can help others to find the nested ternary operator
Les opérateurs ternaires imbriqués doivent explicitement utiliser des parenthèses pour dicter l'ordre des opérations. Précédemment, quand utilisée sans parenthèses, l'associativité-gauche ne résulterait pas dans le comportement attendu pour la plupart des cas.
<?php
1 ? 2 : 3 ? 4 : 5; // obsolète
(1 ? 2 : 3) ? 4 : 5; // ok
1 ? 2 : (3 ? 4 : 5); // ok
?>
Les parenthèses ne sont pas requises lors de l'imbrication dans l'opérant du milieu car ceci est toujours sans ambiguïté et n'est pas affecté par l'associativité :
1 ? 2 ? 3 : 4 : 5 // ok
La syntaxe pour accéder à la position des tableaux et chaîne de caractères avec les
accolades est obsolète. Utiliser $var[$idx]
au lieu de
$var{$idx}
.
Le transtypage (real)
est obsolète,
utiliser (float)
à la place.
La fonction is_real() est aussi obsolète, utiliser is_float() à la place.
$this
quand $this
est utilisé
Délier $this
d'une fermeture non statique qui utilise
$this
est obsolète.
parent
sans classe parente
L'utilisation de parent
à l'intérieur d'une classe sans
parent est obsolète, et émettra une erreur lors de la compilation dans le
futur. Actuellement seule une erreur sera générée si/quand un parent est
accédé lors de l'exécution.
La directive INI allow_url_include est obsolète. L'activer génèrera un avis d'obsolescence lors du démarrage.
Passer des caractères invalides à base_convert(), bindec(), octdec() et hexdec() génèrera désormais un avis d'obsolescence. Le résultat sera toujours calculé comme si les caractères invalides n'existaient pas. Les caractères d'espacement blanc, aussi bien que les préfixes de type 0x (en fonction de la base) continuent d'être acceptés.
L'utilisation de array_key_exists() sur des objets est obsolète. À la place isset() ou property_exists() devraient être utilisés.
Les fonctions get_magic_quotes_gpc() et
get_magic_quotes_runtime() sont obsolètes.
Elles retournent toujours false
.
La fonction hebrevc() est obsolète.
Elle peut être remplacée par nl2br(hebrev($str))
ou,
de préférence, en utilisant le support Unicode RTL (Droite à Gauche).
La fonction convert_cyr_string() est obsolète. Elle peut être remplacée par l'une de mb_convert_string(), iconv() ou UConverter.
La fonction money_format() est obsolète. Elle peut être remplacée par la fonctionnalité intl NumberFormatter.
La fonction ezmlm_hash() est obsolète.
La fonction restore_include_path() est obsolète.
Elle peut être remplacée par ini_restore('include_path')
.
Passer les paramètres à implode() dans l'ordre inverse
est obsolète, utiliser implode($glue, $parts)
au lieu de implode($parts, $glue)
.
L'importation de bibliothèques de type avec l'enregistrement de constantes non sensibles à la casse a été rendue obsolète.
FILTER_SANITIZE_MAGIC_QUOTES
est obsolète,
utiliser FILTER_SANITIZE_ADD_SLASHES
à la place.
Passer un pattern qui n'est pas une chaîne de caractères à mb_ereg_replace() est obsolète. Actuellement, les patterns qui ne sont pas des chaîne de caractères sont interprétés en tant que point de code ASCII. En PHP 8, le pattern sera interprété comme une chaîne de caractères à la place.
Passer l'encodage en tant que troisième paramètre à mb_strrpos() est obsolète. À la place passer une position de 0, et l'encodage en tant que quatrième paramètre.
ldap_control_paged_result_response() et ldap_control_paged_result() sont obsolètes. Les contrôles de paginations peuvent être envoyés avec ldap_search() à la place.
L'appel à ReflectionType::__toString() génère maintenant un avis d'obsolescence. Cette méthode a été dépréciée en faveur de ReflectionNamedType::getName() dans la documentation à partir de PHP 7.1, mais ne lançait pas un avis d'obsolescence pour des raisons techniques.
Les méthodes export()
dans toutes les classes
Reflection sont obsolètes. Créer un objet
Reflection et le convertir en chaîne de caractères à la place :
<?php
// ReflectionClass::export(Foo::class, false) est :
echo new ReflectionClass(Foo::class), "\n";
// $str = ReflectionClass::export(Foo::class, true) est :
$str = (string) new ReflectionClass(Foo::class);
?>
Les drapeaux AI_IDN_ALLOW_UNASSIGNED
et
AI_IDN_USE_STD3_ASCII_RULES
pour
socket_addrinfo_lookup() sont obsolètes,
en raison d'une dépréciation en amont dans glibc.
(\?[^php]).*(\:).*(\?).*(\:[^=])
Above regex can help others to find the nested ternary operator