Nach dem ich heute durch das Zend-Webinar zum Thema Debugging (noch nicht online) wieder auf das Thema PHP-namespaces gekommen bin, ist das "Problem" vorerst "gelöst".
Kurzfassung: Es gibt kein Namespace-Import, nur ein Namespace-Aliasing.
Wenn ich jetzt bei php.net/namespace nachlese, ist das auch total verständlich:
Wenn man "use \foo\bar;" nutzt, ist dies nur die Kurzform von "use \foo\bar as bar;", was lediglich erlaubt "new bar\class();" statt der langen Form "new \foo\bar\class();" zu nutzen.
Mittels use kann man nicht dafür sorgen, dass eine Klasse in einem anderen Namespace ohne Prefix angesprochen werden kann. Ausschließlich Klassen auf der selben Ebene im selben Namespace können ohne Prefix angesprochen werden. Selbst für den globalen Namespace ist bei Klassen immer der \ erforderlich (gilt nicht für Funktionen und Konstanten)
Das bleibende Problem ist halt einfach nur, das selbst ich, der zu 99% nur PHP programmiert, zu sehr in Java denkt. Was ich mir eigentlich wünsche ist "import foo.bar.*;". Aus aktueller PHP-Sicht wäre das also ein "use \foo\bar\*"; was sowas wäre wie "use \foo\bar\* as ${classname};" oder so ähnlich.
Das kann PHP aber nicht.
Da das use-Statement sich aber auf die ganze Datei bezieht, kann man auch keinen eigene use-Implementation schreiben, die im Falle eines * anhand der Verzeichnisstruktur alle Klassen einzeln "aliased".
Fazit:
"use" sollte in "alias" (oder, da es in der Doku oft mit dem Dateisystem verglichen wird, "link") umbenannt werden. Vergesst das Java-"import" und C#-"use". PHP kocht mal wieder sein eigenes Süppchen, dass mir bisher nicht schmeckt.
Danke Jan.