Bien que la plupart des scripts PHP 4 existants devraient fonctionner, il convient de noter quelques incompatibilités avec les versions antérieures de PHP :
strrpos() et strripos() utilisent maintenant la chaîne de caractères complète (un seul caractère auparavant) en tant qu'élément de recherche.
L'utilisation d'offsets illégaux sur une chaîne de caractère entraîne maintenant un message E_ERROR au lieu d'un message E_WARNING auparavant.
array_merge() a été modifié pour n'accepter que des tableaux. Pour chaque variable passée en paramètre autre qu'un tableau, un message E_WARNING sera envoyé. Soyez attentifs car votre script pourrait émettre des E_WARNING de façon inopinée.
La variable de serveur PATH_TRANSLATED n'est plus définie implicitement avec Apache2 SAPI contrairement à auparavant (PHP 4) où elle était fixée avec la même valeur que SCRIPT_FILENAME lorsqu'Apache ne la renseignait pas. Cette modification a été apportée afin d'être en conformité avec les specifications CGI. Merci de consulter le bug #23610 pour plus d'informations.
La constante T_ML_CONSTANT n'est plus définie par l'extension Tokenizer. Si error_reporting est réglé à E_ALL, PHP va générer un avertissement. Bien que T_ML_CONSTANT n'ait jamais été utilisée, elle était définie dans PHP 4. Avec PHP 4 et PHP 5, // et /* */ sont assimilés à la constante T_COMMENT. Toutefois les commentaires de style PHPDoc /** */ , qui sont parsés depuis PHP 5, sont reconnus en tant que T_DOC_COMMENT.
$_SERVER est maintenant renseigné avec argc and argv si votre variables_order inclus "S". Si vous avez configuré votre système pour qu'il ne créé pas $_SERVER, il ne seront bien sûr pas renseignés. Cette modification à été effectuée afin que argc et argv soient toujours accessibles dans la version CLI quelque soit la valeur de variables_order. Ainsi, la version CLI renseignera dorénavant toujours les variables $argc et $argv.
Un objet sans propriété n'est plus considéré comme vide, "empty".
Les classes doivent être déclarées avant d'être utilisées
Exemple B-1. strrpos() et strripos() utilisent maintenant une chaîne de caractère en tant que needle
|
L'exemple ci-dessous fonctionnait avec PHP 4, il entraîne une erreur fatale avec PHP 5.
Précédent | Sommaire | Suivant |
Migration de PHP 4 vers PHP 5 | Niveau supérieur | CLI et CGI |