Rechercher une fonction PHP

Modifications entrainant une incompatibilité ascendante

Cœur de PHP

Retour à la première page de Manuel PHP  Table des matières Haut

Interprétation des Labels de Terminaison Heredoc/Nowdoc

Avec l'introduction de la syntaxe flexible heredoc / nowdoc, les chaîne de caractères doc qui contiennent le label de terminaison dans leur corps peuvent causer des erreurs de syntaxe ou changer en interprétation. Par exemple dans :

<?php
$str 
= <<<FOO
abcdefg
   FOO
FOO;
?>
l'occurrence indentée de FOO n'avait pas de signification particulière précédemment. Désormais elle sera interprétée comme la fin de la chaîne de caractères heredoc et le FOO; suivant causera une erreur de syntaxe. Ce problème peut toujours être résolu en choisissant un label de terminaison qui n'apparait pas dans le contenu de la chaîne de caractères.

Retour à la première page de Manuel PHP  Table des matières Haut

Continue visant Switch génèrent des Avertissements

Les déclarations continue visant les structures de flux de contrôle switch généreront désormais un avertissement. En PHP ces déclarations continue sont équivalentes à break, alors qu'ils se comportent comme continue 2 dans d'autres langages.

<?php
while ($foo) {
    switch (
$bar) {
      case 
"baz":
         continue;
         
// Warning: "continue" targeting switch is equivalent to
         //          "break". Did you mean to use "continue 2"?
   
}
}
?>

Retour à la première page de Manuel PHP  Table des matières Haut

Interprétation Stricte des Clés de Chaînes de Charactères Entiers sur ArrayAccess

Les accès de tableau du type $obj["123"], où $obj implémente ArrayAccess et "123" est une chaîne de caractères d'entier litérale ne résultera plus en une conversion implicite en entier, c.à.d., $obj->offsetGet("123") sera appellé au lieu de $obj->offsetGet(123). Ceci correspond au comportement pour les non litérales. Le comportement des tableau n'est pas affecté d'une quelconque manière, ils continuent de convertir implicitement des clés de chaîne de caractères en entier.

Retour à la première page de Manuel PHP  Table des matières Haut

Les Propriétés Statiques ne sont plus séparées par l'Affectation de Référence

En PHP, les propriétés statiques sont partagées entre les classes héritantes, sauf si la propriété statique est explicitement remplacée dans une classe enfant. Cependant à cause d'un artefact d'implémentation il était possible de séparer les propriétés statiques en affectant une référence. Cette lacune a été corrigée.

<?php
class Test {
    public static 
$x 0;
}
class 
Test2 extends Test { }

Test2::$x = &$x;
$x 1;

var_dump(Test::$xTest2::$x);
// Previously: int(0), int(1)
// Now:        int(1), int(1)
?>

Retour à la première page de Manuel PHP  Table des matières Haut

Les références retournées par les Tableaux et les accès aux propriétés sont immédiatement décompressées

Les références retournées par les tableaux et les accès aux propriétés sont désormais décompressés dans le cadre de l'accès. Ceci signifie qu'il n'est plus possible de modifier la référence entre l'accès et l'utilisation de la valeur accèdée :

<?php
$arr 
= [1];
$ref =& $arr[0];
var_dump($arr[0] + ($arr[0] = 2));
// Previously: int(4), Now: int(3)
?>
Ceci rend le comportement des références et non références cohérent. Il est à noter que lire et écrire une valeur à l'intérieur d'une unique expression continue d'être un comportement non défini et peut changer de nouveau dans le futur.

Retour à la première page de Manuel PHP  Table des matières Haut

La décompression d'arguments de Traversables avec des clés non-entières n'est plus prise en charge

La décompression d'arguments a cessé de fonctionner avec Traversables avec des clés non-entières Le code suivant fonctionnait en PHP 5.6-7.2 par accident.

<?php
function foo(...$args) {
    
var_dump($args);
}
function 
gen() {
    
yield 1.23 => 123;
}
foo(...gen());
?>

Retour à la première page de Manuel PHP  Table des matières Haut

Divers

L'utilitaire ext_skel a été entièrement repensé avec de nouvelles options et certaines anciennes options supprimées. Ceci est maintenant écrit en PHP et n'a aucune dépendance externe.

Le support pour BeOS a été abandonné.

Les exceptions lancées à cause d'une conversion automatique d'avertissements en exceptions avec le mode EH_THROW (par exemple certaines exceptions de DateTime) ne remplissent plus l'état de error_get_last(). En tant que tels, ils fonctionnent désormais de la même manière que les exceptions levées manuellement.

TypeError rapporte désormais les mauvais types en tant que int et bool au lieu de integer et boolean, respectivement.

Les variables indéfinies passées à compact() seront désormais rapportées avec une notice.

getimagesize() et les fonctions connexes rapportent désormais le type MIME des images BMP en tant que image/bmp au lieu de image/x-ms-bmp, car le premier a été inscrit avec l'IANA (voir » RFC 7903).

stream_socket_get_name() retourne désormais les adresses IPv6 avec des crochets. Par exemple "[::1]:1337" sera retourné au lieu de "::1:1337".

Retour à la première page de Manuel PHP  Table des matières Haut

BCMath Arbitrary Precision Mathematics

Tous les avertissements lancés par les fonctions BCMath utilisent désormais le gestionnaire d'erreur de PHP. Auparavant certains avertissements étaient écrits directement à stderr.

bcmul() et bcpow() retourne désormais les nombres avec la précision demandée. Auparavant, certain nombres pouvaient omettre les zéros de fin décimaux.

Retour à la première page de Manuel PHP  Table des matières Haut

IMAP, POP3 et NNTP

Les authentifications rsh/ssh sont désactivées par défaut. Utilisez imap.enable_insecure_rsh si vous voulez les activer. Il est à noter que la bibliothèque IMAP ne filtre pas les noms des boîtes aux lettres avant de les passer aux commandes rsh/ssh, ainsi passer des données non fiable à cette fonction avec rsh/ssh activé est dangereux.

Retour à la première page de Manuel PHP  Table des matières Haut

Chaînes de Caractères Multioctets

En raison de la prise en charge des captures nommées, les masques mb_ereg_*() utilisant les captures nommées se comporteront différemment. En particulier les captures nommées feront partie des correspondances et mb_ereg_replace() interprétera la syntaxe additionnelle. Voir Capture Nommées pour plus d'information.

Retour à la première page de Manuel PHP  Table des matières Haut

Extension MySQL Améliorée (MySQLi)

Les déclarations préparées rapportent désormais les fractions de secondes pour les colonnes DATETIME, TIME et TIMESTAMP avec spécificateur décimal (par example TIMESTAMP(6) lors de l'utilisation de microsecondes). Auparavant les fractions de secondes étaient tout simplement omises des valeurs de retours.

Retour à la première page de Manuel PHP  Table des matières Haut

Fonctions MySQL (PDO_MYSQL)

Les déclarations préparées rapportent désormais les fractions de secondes pour les colonnes DATETIME, TIME et TIMESTAMP avec spécificateur décimal (par example TIMESTAMP(6) lors de l'utilisation de microsecondes). Auparavant les fractions de secondes étaient tout simplement omises des valeurs de retours. Veuillez noter que ceci affecte uniquement l'utilisation de PDO_MYSQL avec les déclarations préparées émulées désactivées (par exemple en utilisant la fonctionalité native de préparation). Les déclarations utilisant des connexions qui ont PDO::ATTR_EMULATE_PREPARES=TRUE (ce qui est par défaut) ne sont pas affectées par la correction de bogue et récupéraient déjà les valeurs des fractions de secondes depuis le moteur.

Retour à la première page de Manuel PHP  Table des matières Haut

Reflection

Les exportations de Reflection en chaîne de caractères utilisent désormais int et bool au lieu de integer et boolean, respectivement.

Retour à la première page de Manuel PHP  Table des matières Haut

Bibliothéque Standard de PHP (SPL)

Si un auto-chargeur SPL lance une exception, les auto-chargeurs suivant ne seront pas exécutés. Précédemment tous les auto-chargeurs étaient exécutés et les exceptions étaient chainées.

Retour à la première page de Manuel PHP  Table des matières Haut

SimpleXML

Les opérations mathématiques impliquant les objets SimpleXML traiteront désormais le texte comme un entier ou un nombre décimal, selon ce qui est plus approprié. Auparavant les valeurs étaient traitées comme un entier sans condition.

Rechercher une fonction PHP

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-migration73.incompatible.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut