Oder führt php bereits Programmcode aus, ohne zu wissen, was später kommt?
PHP ist zwar prinzipiell eine prozedurale bzw. strukturierte Scriptsprache (die auch Objektorientierung erlaubt) - sie wird aber nicht vollständig interpretiert sondern kurz vor Ausführung kompiliert.
Wann include- oder require-Anweisungen aufgelöst werden und was mit den Variablen passiert, ist aber klar definiert (siehe Dokumentation).
Was haben denn deine Versuche ergeben um das selbst herrauszufinden?
echo foo();
function foo() {
return 'foobar';
}
oder
echo foo();
include('foo-function.php');
function foo() {
return 'foobar';
}