Hallo Rolf!
Ich weiß jetzt, wo mein Denkfehler war und wieso ich deshalb alles falsch interpretiert hatte! Meine Ausgangs-Situation war:
file2.inc:
<?php
Namespace Foo
Class Bar
{
...
}
$irgendwas = New Bar;
?>
seite.php:
<?php
require_once(file2.inc);
$test = $irgendwas -> methode_xyz();
?>
Da bringt $test ein Ergebnis. Klar! Die Instanz $irgendwas wurde ja in file2.inc gebildet, also im Foo Namensraum. Das hatte ich nicht bedacht und deshalb fälschlicherweise den Eindruck, es funktioniert auch ohne eine Namensraum Angabe in seite.php. Den Denkfehler sehe ich jetzt auch auf 2 weitere Arten: Im PHP Manual habe ich die Konstante NAMESPACE gefunden. Die ergibt auf file2.inc 'Foo', auf Seite seite.php ist sie inhaltslos. Klar, weil eben kein Namensraum vorhanden ist. Selbst, wenn der im includeten Skript da ist. Und der 2. Beweis für meinen Trugschluss ist, dass eine weitere Klasse, die erstmalig in seite.php aufgerufen wird, selbst aber auch eine Namespace Angabe hat, zu einem Fehler führt. Die Klasse wird nicht gefunden.
Conclusio: Die Angabe von Namespace muss explizit auf der Seite erfolgen, auf der der Namensraum gelten soll. Wird eine andere Datei mit Namensraum includet, dann wird dieser nicht (!!) automatisch übernommen, während die Angabe
header('content-type:text/html; charset=UTF-8');
in file2.inc stehen kann und dann auch für seite.php gilt. Vorausgesetzt natürlich, dass es bis zu dieser Zeile weder in file2.inc, noch in seite.php eine Ausgabe Richtung Client gegeben hat.
Danke für Deine Hilfe! Somit ist meine diesbezügliche Frage beantwortet!
Professor Hase
PS: Bzgl. der anderen Sache mit den strict_types hat mir Dedlfix schon geantwortet, wie ich gerade sehe. Damit werde ich mich jetzt seperat beschäftigen.