PHP pappt alles, was du mit include(), require() & Co. einbindest, stumpfsinnig zu einer großen Textdatei zusammen.
Das ist falsch. Du suggerierst, dass beim Parsen zuerst mal alle includes/requires gefunden und damit ein großer Quelltext zusammengebaut wird, den PHP dann ausführt.
Include oder Require setzen die Codeausführung in der angegebenen Datei fort, und auch nur, wenn sie selbst ausgeführt werden.
Es ist im Endeffekt unerheblich, wann die Dateien zusammengepappt werden, es bleibt eine große zusammengepappte Masse. Oder möchtest du behaupten,
if ($bla == 1) {
echo "bla";
}
wäre etwas anderes (im Sinne von: würde ein anderes Ergebnis erzeugen) als
if ($bla == 1) {
echo "bla"; // tatsächlich mittels include("bla.php") eingebunden
}
Um das grundlegende Prinzip zu verstehen, reicht die Vorstellung, dass include() & Co. durch den jeweiligen Dateiinhalt ersetzt werden. Es ging hier konkret um die Fehlinterpretation, dass die Dateien eine Art eigenständige Module wären und session_start() deshalb in jeder einzubindenden Datei aufgerufen werden müsse.