L'analyse et l'exécution sont désormais deux étapes complètement dissociées, et l'exécution
intervient lorsque le code, avec tous ses inclusions et pré-requis, a été complètement
analysé et validé.
Une des nouvelles conditions introduites est que les fichiers
inclus et requis (include() et
require()) doivent être syntaxiquement
complets. Vous ne pouvez plus répartir différents cas de votre
code dans plusieurs fichiers. Vous ne pouvez plus commencer une
boucle for ou while,
une condition if ou un cas switch
dans un fichier, et finir la boucle ou placer les cas
else, endif,
case ou break
dans un autre fichier.
Il est toujours valable d'inclure du code supplémentaire depuis
une boucle ou dans une condition, mais les accolades de
bloc {...}, et les éléments de la boucle
doivent être dans le même fichier ou dans la même chaîne évaluée avec
eval().
Cela ne devrait pas perturber trop de monde car éclater son code ainsi
est de toute façon considéré comme un très mauvais style de programmation.
Une autre nouveauté est qu'il n'est plus possible de faire
retourner une valeur avec un fichier requis (require())
(mais c'est plutôt rare en PHP 3). Retourner une valeur
avec un fichier inclus (include()) est toujours
possible.