Skip to main content

Der Moderne Weg

getcwd() – Aktuelles Verzeichnis holen

Methode: getcwd() – „Get Current Working Directory“

Rückgabewert: Ein String mit dem aktuellen Pfad, z.B. /var/www/html/meinProjekt/src/code.

Anwendungsbeispiel

echo getcwd();

Ausgabebeispiel

/var/www/html/meinProjekt/src/code.

scandir() – Ordner Scannen

Erklärung: Scannt einen mitgegeben Pfad und gibt Array mit allen Ordner und Dateien zurück.

Methode: scandir(string $verzeichnis) – Scanne ein Verzeichnis

Eingabe: Ein Pfad zu einem Verzeichnis als String. (kann abosluter aber auch realtiver Pfad sein)

Rückgabwert: Ein Array. Wichtig: Dieses Array enthält immer . (das aktuelle Verzeichnis) und .. (das übergeordnete Verzeichnis). Das Array enthält nur die Namen der Ordner und Dateien, nicht die Pfade.

Anwendungsbeispiel: 

Ausgabe: 

chdir() – Ordner ändern

Erklärung: Ändert das aktuellen php Arbeitsverzeichnis des Skripts. Alle neuen Operationen werden in diesem Ordner ausgeführt.

Methode: chdir(string $verzeichnis) – „Change Directory“

Eingabe: Ein Pfad zu einem Verzeichnis als String.

Rückgabwert: Ein Boolean – true = Erfolg | false = Misserfolg

Anwendungsbeispiel: 

Ausgabe: 

Alternative manuelle Methode

Die manuelle, schrittweise Methode: opendir(), readdir() und closedir() arbeiten zusammen, ähnlich wie beim Lesen einer Datei.

Methode: opendir()

Erklärung: Öffnet ein Verzeichnis zum Lesen und gibt eine „Ressource“ (eine Art Verweis) zurück.

Methode: opendir(string $verzeichnis) – Scanne ein Verzeichnis 🔍

Eingabe: Ein Pfad zu einem Verzeichnis als String.

Rückgabwert: RessourceEin Array. Wichtig: Dieses Array enthält immer . (das aktuelle Verzeichnis) und .. (das übergeordnete Verzeichnis).

Anwendungsbeispiel: 

Ausgabe: 

Methode: readdir()

Erklärung: Liest den nächsten Eintrag (Datei oder Ordner) aus dem geöffneten Verzeichnis. Du rufst diese Funktion in einer Schleife auf, bis du am Ende angelangt bist.

Methode: readdir(Ressource $handle) – Scanne ein Verzeichnis 🔍

Eingabe:

Rückgabwert:

Anwendungsbeispiel: 

Ausgabe: 

Moderne Methode: closedir()

Erklärung: Schließt die Verzeichnis-Ressource wieder. Das ist wichtig, um Ressourcen freizugeben.

Methode: scandir(string $verzeichnis) – Scanne ein Verzeichnis 🔍

Eingabe:

Rückgabwert:

Anwendungsbeispiel: 

Ausgabe: 

Anwendung

Szenario: Du bist in ./src/code und möchtest den Inhalt von ./src/buttons auflisten.

Es gibt zwei gute Wege, das zu tun.

Weg 1: Mit chdir() das Verzeichnis wechseln

<?php

// Schritt 1: Wo bin ich gerade? (Zur Orientierung)
$startVerzeichnis = getcwd();
echo "Start-Verzeichnis: " . $startVerzeichnis . PHP_EOL;
// Angenommene Ausgabe: /pfad/zu/deinem/projekt/src/code

// Schritt 2: Eine Ebene nach oben gehen (von 'code' zu 'src')
chdir('../');

// Schritt 3: In das Zielverzeichnis 'buttons' wechseln
chdir('buttons');

// Schritt 4: Das neue aktuelle Verzeichnis scannen
$aktuellesVerzeichnis = getcwd();
echo "Aktuelles Verzeichnis: " . $aktuellesVerzeichnis . PHP_EOL;
// Ausgabe: /pfad/zu/deinem/projekt/src/buttons

$dateien = scandir('.'); // '.' bedeutet "das aktuelle Verzeichnis"

echo "Inhalt von 'buttons':" . PHP_EOL;
print_r($dateien);

?>

Vorteil: Sehr einfach nachzuvollziehen.

Nachteil: Du veränderst den globalen Zustand deines Skripts. Das kann später im Code zu Verwirrung führen.

Weg 2 (Besser & Sicherer): Pfade zusammensetzen

Anstatt das Verzeichnis des Skripts zu ändern, baust du einfach den korrekten Pfad zum Zielverzeichnis zusammen und übergibst diesen an scandir(). Dafür nutzen wir die „magische Konstante“ __DIR__. Sie enthält immer den Pfad zu der Datei, in der sie steht – das ist zuverlässiger als getcwd().

 

<?php

// __DIR__ ist der Pfad zur aktuellen Datei, z.B. /pfad/zu/deinem/projekt/src/code
echo "Skript-Verzeichnis (__DIR__): " . __DIR__ . PHP_EOL;

// Schritt 1: Den Pfad zum Zielverzeichnis 'buttons' erstellen.
// Wir gehen vom aktuellen Verzeichnis (__DIR__) eine Ebene hoch ('/../') und dann in 'buttons'.
$buttonsVerzeichnis = __DIR__ . '/../buttons';

echo "Ziel-Verzeichnis: " . $buttonsVerzeichnis . PHP_EOL;

// Schritt 2: Das Zielverzeichnis direkt scannen, ohne uns zu "bewegen"
if (is_dir($buttonsVerzeichnis)) { // Gute Praxis: Prüfen, ob es den Ordner überhaupt gibt
    $dateien = scandir($buttonsVerzeichnis);

    echo "Inhalt von 'buttons':" . PHP_EOL;
    print_r($dateien);
} else {
    echo "Fehler: Verzeichnis nicht gefunden: " . $buttonsVerzeichnis;
}

?>

Vorteil:

  • Zustandslos: Du änderst nicht, wo dein Skript „denkt“, dass es sich befindet. Dein Code ist robuster und vorhersehbarer.
  • Klarheit: Der Code zeigt deutlich, welches Verzeichnis gescannt wird.

Für deinen Anwendungsfall und generell für sauberen Code empfehle ich dir dringend den zweiten Weg. Er ist die moderne und sicherere Praxis. Benutze chdir() nur, wenn du wirklich einen guten Grund dafür hast

 

Leave a Reply