Klaus: Verständnisproblem namespaces

Beitrag lesen

Hey dedlfix danke für deine Hilfe!

Beides hat nichts miteinander zu tun. Man bildet jedoch gern eine Namespace-Struktur auf einer Verzeichnissstruktur ab, damit man eine logische Ordung auch physisch vorliegen hat. Das hilft, sich in diesem komplexen Gebilde zurechtzufinden.

Ah ok ich verstehe. Ich habe also versucht das Pferd von hinten aufzuzäumen.

Unter der Voraussetzung, dass jeder Namespace-Teil einem Verzeichnisnamen entspricht, würden sich Elemente in foo.php sich im Namespace \Projekt\Module\foo befinden, Elemente in bar.php sind in \Projekt\Module\bar und Dinge in index.php unter \Projekt. Aber - und dass wäre die Antwort auf die zweite Frage - du kannst dir das selbst so einrichten, wie du das gern hättest.

Aber wie wäre es denn am sinnvollsten? Meine Überlegung war, dass in dem Fall jedes Modul eine Datei namens "constants.php" hat und ich denen gern den namespace des jeweiligen Moduls geben wollte damit sich die Konstanten nicht "beissen" falls sie gleiche Namen haben.

Das ist dein Problem. Namespaces in einer Verzeichnisstruktur nachzubilden, hilft jedenfalls beim Finden von Dateien, wenn man das 1:1 übersetzen kann. Ansonsten braucht es da einen anderen Zuordnungsmechanismus.

Du meinst also im Idealfall tauscht mein autoloader nur die "" gegen "/", hängt ein ".php" an und findet so die jeweilige Klasse? Oder etwas komplexer die Zeichen tauschen und das jeweilige Verzeichnis inkl. Unterverzeichnisse nach einer Datei mit dem Klassennamen durchsuchen?

Und was wäre in dem Fall der Nutzen von "use"? Mir leuchtet nicht ganz ein was es für einen Sinn ergibt wenn ich "use" nach "namespace" benutze. Auch das ist mir noch nicht so ganz klar.