Pfade absolut oder nicht?

xCondoRx

Erfahrenes Mitglied
Hi zusammen..
Ich wollte mal nach Meinungen Fragen (oder eure Techniken) wie ihr mit Pfadangaben umgeht. Benutzt ihr relative oder absolute Pfadangaben wenn ihr beispielsweise Scripte einbindet? Und wieso macht ihr es auf diese Weise?

Ich z.B. habe eine Datei, die ich einbinde, in der ich die Pfade als globale Variablen anlege.

PHP:
$MS_GLOBAL['PATH']['LIB'] = 'Pfad zum lib-Verzeichnis';
$MS_GLOBAL['PATH']['INC'] = 'Pfad zum inc-Verzeichnis'

# und so wird es dann folglich aufgerufen:

require($MS_GLOBAL['PATH']['INC'].'class.php');

Auf diese Weise können die Verzeichnisse sonstwo liegen und ich muss nur eine Datei anpassen, statt sämtlicher Scripte.
Oder sieht jemand einen entscheidenen Nachteil daraus?
 
Ich benutzt relative Pfadangaben, die sind kürzer ^^ Und für bestimmte Funktionen besser. Ich hab in jeder php Datei eine Variable "$root" stehen wo der Pfad zum Script-Root drin steht. Somit hab ich in jeder Datei einen Ausgangspunkt. Und wenn ich in das includes Verzeichnis muss geb ich $root . "includes/bla.php" an.
 
Wenn du dein Document Root in der Variablen hast und immer von diesem Punkt ausgehst, ist es absolut :D.. Oder steht in der Variablen $root immer etwas anderes? Also schreibst da jetzt rein "../../" oder "$_SERVER['DOCUMENT_ROOT']"?
 
Es kommt darauf an wo sich die Datei befindet. Die Dateien im Root-Verzeichnis haben $root = "./", dateien im Admin-Verzeichnis haben $root = "./../"

Ich hab immer gedacht absolut bedeutet das bei der Pfadangabe direkt http://bla... also die ganze URL steht
 
So wie du es machst, gehts wohl noch als relativ durch :D.. Relative Pfade gehen vom aktuellen Script aus. Absolute immer vom Root. Der Nachteil bei deiner Variante ist allerdings, dass du, solltest du deine Ordnerstruktur ändern, jede Datei wieder neu anpassen musst.
 
Musst du bei deiner Variante von oben, die Variable nicht in jede Datei schreiben? Wenn ja ist der Schreibeaufwand größer :) Wenn man sein Projekt gut plant ändert sich eine Ordnerstruktur kaum.
 
Was ich in jede Datei schreibe ist natürlich das hier:

require($MS_GLOBAL['PATH']['INC'].'class.php');

Also das ganz normale einbinden einer Datei. Sollte der inc-Ordner mal an eine andere Stelle wandern, muss ich diese Zeile aber nicht ändern. Ich ändere nur einmal den Pfad in der Datei, in der der Pfad definiert wurde. Also muss ich nur eine einzige Datei ändern, wenn sich etwas an der Struktur ändert.

Damit habe ich jetzt auch die Möglichkeit Scripte aus anderen Projekten (mit anderer Struktur) in das aktuelle Projekt zu übernehmen, ohne irgendwas anpassen zu müssen.
 
Und was machst du wenn du zb in dieser class.php als Bsp. eine Datei einbinden willst? Bzw. wenn du eine Datei hast die nicht eingebunden wird, aber aufgerufen wird und nicht im Root Verzeichnis liegt. Dann trifft der Weg dafür nicht zu.
 
Zuletzt bearbeitet:
Zurück