Moin!
Wenn man nun nicht mit Klassen arbeitet, die includet werden, sondern "nur" mit externen Dateien, dann hat man ja keine Abgrenzug der Namesräume. Wie könnte man die denn am sinnvollsten gestalten für das Include von einfachen Dateien?
Einfach ganz furchtbar gut aufpassen. Den Transfer von Variablen über Include-Grenzen auf ein Minimum reduziert halten könnte helfen.
Wie würdest Du das sinnvoll gestalten? Wie gesagt, nicht als Klasse, sondern klassisch ;-))
Ich habe eine Shop-Software entwickelt, die an genau einer Stelle das hier angesprochene Problem entwickeln könnte: Eine zentrale Datei "shop.php", auf die mit mod_rewrite alle Requests umgeleitet werden, analysiert die angeforderte URL und verzweigt dann entsprechend zu diversen Unterdateien, welche dann die gewünschten Daten per Klassenmethode anfordern, ins Template einsetzen und ausgeben. Damit ich in der "shop.php" nicht ellenlange "if-else" oder "switch-case"-Bedingungen habe, wird der auszuführende Code des jeweiligen Falls mit include eingebunden. Der Transfer von Variablen ist an dieser Stelle allerdings Null, da zuerst nur (mit statischem Methodenaufruf einer weiteren Klasse) die URL analysiert wurde - alle anderen Prozeduren wie Artikelliste holen oder Warenkorb ausgeben aber erst in der eingebundenen Datei stattfinden.
Es gibt in der Tat keine Lösung, um Konflikten an dieser Stelle durch Namensräume aus dem Weg zu gehen - sie treten einfach auf, wenn man nicht aufpaßt. Dasselbe Problem hat man ja auch, wenn man ein sehr sehr langes Skript mit ganz viel "Hauptprogramm" schreibt und am Ende aus Versehen eine Variable benutzt, die am Anfang schon eine wichtige Funktion hatte.
- Sven Rautenberg