Start · Sprachen · PHP · Referenz · svn_fs_is_dir

svn_fs_is_dir

Funktion

Prüft, ob ein angegebener Pfad innerhalb eines Subversion-Dateisystem-Roots auf ein Verzeichnis zeigt.

Kategorie: misc

Signatur

svn_fs_is_dir(resource $fsroot, string $path): bool

Beschreibung

svn_fs_is_dir() gehört zur PECL-Erweiterung svn und arbeitet direkt auf einem Subversion-Dateisystem-Root-Ressource-Handle, wie es z. B. von svn_fs_revision_root() oder svn_fs_txn_root() zurückgegeben wird. Die Funktion prüft, ob der übergebene Pfad innerhalb dieses Revision-Roots ein Verzeichnis (Directory-Node) ist.

Typisch wird die Funktion eingesetzt, wenn Inhalte eines Subversion-Repositories programmatisch durchsucht oder aufgelistet werden sollen und zwischen Dateien und Verzeichnissen unterschieden werden muss – etwa beim rekursiven Traversieren einer Revision oder beim Validieren von Pfaden vor Lese-Operationen.

Der Pfad muss mit einem führenden Schrägstrich beginnen (/) und innerhalb der betreffenden Revision existieren. Existiert der Pfad nicht oder handelt es sich um eine Datei, gibt die Funktion false zurück.

Die Funktion ist das Gegenstück zu svn_fs_is_file(). Beide zusammen erlauben eine vollständige Unterscheidung der Node-Typen im Subversion-Dateisystem.

Parameter

Name Typ Default Beschreibung
$fsroot Pflicht resource Ein Ressource-Handle auf ein Subversion-Dateisystem-Root, wie es von svn_fs_revision_root() oder svn_fs_txn_root() zurückgegeben wird.
$path Pflicht string Der absolute Pfad im Repository, der geprüft werden soll. Muss mit einem führenden / beginnen, z. B. /trunk/src.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Pfad im angegebenen Dateisystem-Root ein Verzeichnis ist, andernfalls false (auch wenn der Pfad nicht existiert oder eine Datei ist).

Beispiele

Prüfen, ob ein Repository-Pfad ein Verzeichnis ist

<?php
// Repository öffnen
$repos = svn_repos_open('/var/svn/myrepo');
$fs    = svn_repos_fs($repos);

// Aktuellste Revision ermitteln
$latestRev = svn_fs_youngest_rev($fs);

// Revision-Root für die aktuellste Revision holen
$fsroot = svn_fs_revision_root($fs, $latestRev);

$path = '/trunk/src';

if (svn_fs_is_dir($fsroot, $path)) {
    echo "'{$path}' ist ein Verzeichnis.";
} else {
    echo "'{$path}' ist kein Verzeichnis (oder existiert nicht).";
}
?>
'/trunk/src' ist ein Verzeichnis.

Rekursives Durchsuchen eines Repository-Verzeichnisses

<?php
function listRepoContents(resource $fsroot, string $path): void
{
    $entries = svn_fs_dir_entries($fsroot, $path);
    if (!is_array($entries)) {
        return;
    }
    foreach ($entries as $name => $nodeId) {
        $fullPath = rtrim($path, '/') . '/' . $name;
        if (svn_fs_is_dir($fsroot, $fullPath)) {
            echo "[DIR]  {$fullPath}\n";
            listRepoContents($fsroot, $fullPath);
        } else {
            echo "[FILE] {$fullPath}\n";
        }
    }
}

$repos  = svn_repos_open('/var/svn/myrepo');
$fs     = svn_repos_fs($repos);
$fsroot = svn_fs_revision_root($fs, svn_fs_youngest_rev($fs));

listRepoContents($fsroot, '/trunk');
?>
[DIR] /trunk/src [FILE] /trunk/src/index.php [DIR] /trunk/lib [FILE] /trunk/lib/helper.php

// Wichtig · Fallstricke

Voraussetzung: Diese Funktion steht nur zur Verfügung, wenn die PECL-Erweiterung svn installiert und aktiviert ist. Sie ist nicht Bestandteil der PHP-Standardinstallation.

Der übergebene $path muss absolut und mit / beginnend sein. Relative Pfade führen zu unerwartetem Verhalten oder einem Fehler.

Wird ein ungültiges oder bereits freigegebenes $fsroot-Handle übergeben, kann ein PHP-Warning oder ein fataler Fehler auftreten. Stellen Sie sicher, dass das Handle gültig ist.