Signatur
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
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).";
}
?>
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');
?>
// 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.