解析器行为

解析和执行现在变为两个完全独立的步骤。只有当完全成功的解析后,程序才会执行。

这种改变所带来的一个新的要求是一个脚本文件所包含的另一个文件必须有着完整的语法结构。您不能将一个完整的控制结构分散在不同的文件中。这意味着您不能在一个文件中开始一个 forwhile 循环、一个 ifswitch 块,而在另一个文件中结束它们,或在另一个文件中使用 elseendifcasebreak

但是在循环或其它控制结构中包含额外的脚本文件是允许的。只要控制的关键词和相应的 {...} 在同一个单元(文件或使用函数 eval() 结合的字符串)中就可以了。

不过,在循环或其它控制结构中包含额外的脚本文件并不是一个好的遍程习惯。

另外,一种在 PHP 3 中不常见的代码——从一个 require 的文件中返回值——在 PHP 4 中也不能使用。而从一个 include 文件中返回值还是允许的。