Start · Sprachen · PHP · Referenz · svn_fs_is_file

svn_fs_is_file

Funktion

Prüft, ob ein gegebener Pfad im Subversion-Dateisystem auf eine reguläre Datei zeigt.

Kategorie: misc

Signatur

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

Beschreibung

svn_fs_is_file() ist Teil der PECL-Erweiterung svn und arbeitet direkt mit dem Subversion-Dateisystem (FS). Sie nimmt eine Dateisystem-Wurzel-Ressource ($fsroot), wie sie typischerweise von svn_fs_revision_root() oder svn_fs_txn_root() zurückgegeben wird, sowie einen Pfad innerhalb dieses Dateisystems entgegen und gibt true zurück, wenn dieser Pfad auf eine reguläre Datei zeigt.

Die Funktion ist das Gegenstück zu svn_fs_is_dir(): Zusammen erlauben sie es, den Typ eines Knotens im Repository zu bestimmen, bevor weitere Operationen (z. B. Lesen des Inhalts oder Auflisten von Einträgen) darauf ausgeführt werden.

Typische Anwendungsfälle sind das Traversieren eines Repository-Baums, die Validierung von Pfaden vor Lese- oder Schreiboperationen sowie das Erstellen von Werkzeugen, die Repository-Inhalte programmatisch auswerten oder darstellen.

  • Gibt true zurück, wenn $path eine Datei ist.
  • Gibt false zurück, wenn $path ein Verzeichnis ist oder nicht existiert.

Parameter

Name Typ Default Beschreibung
$fsroot Pflicht resource Eine Dateisystem-Wurzel-Ressource, die eine bestimmte Revision oder Transaktion im Subversion-Repository repräsentiert. Wird üblicherweise mit svn_fs_revision_root() erzeugt.
$path Pflicht string Der absolute Pfad innerhalb des Subversion-Dateisystems, der geprüft werden soll, z. B. /trunk/src/index.php.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der angegebene Pfad auf eine reguläre Datei zeigt, andernfalls false (z. B. wenn es ein Verzeichnis ist oder der Pfad nicht existiert).

Beispiele

Prüfen ob ein Repository-Pfad eine Datei ist

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

// Wurzel der aktuellen HEAD-Revision holen
$youngest = svn_fs_youngest_rev($fs);
$fsroot   = svn_fs_revision_root($fs, $youngest);

$path = '/trunk/README.txt';

if (svn_fs_is_file($fsroot, $path)) {
    echo "'{$path}' ist eine Datei.\n";
} else {
    echo "'{$path}' ist keine Datei (möglicherweise ein Verzeichnis oder existiert nicht).\n";
}
'/trunk/README.txt' ist eine Datei.

Repository-Baum traversieren und Dateien auflisten

<?php
function listFiles(resource $fsroot, string $dir): void
{
    $entries = svn_fs_dir_entries($fsroot, $dir);
    if (!is_array($entries)) {
        return;
    }
    foreach (array_keys($entries) as $name) {
        $fullPath = rtrim($dir, '/') . '/' . $name;
        if (svn_fs_is_file($fsroot, $fullPath)) {
            echo "Datei: {$fullPath}\n";
        } elseif (svn_fs_is_dir($fsroot, $fullPath)) {
            echo "Verzeichnis: {$fullPath}\n";
            listFiles($fsroot, $fullPath);
        }
    }
}

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

listFiles($fsroot, '/trunk');
Verzeichnis: /trunk/src Datei: /trunk/src/index.php Datei: /trunk/README.txt

// Wichtig · Fallstricke

PECL-Abhängigkeit: svn_fs_is_file() ist Bestandteil der PECL-Erweiterung svn und steht nicht in einer Standard-PHP-Installation zur Verfügung. Die Erweiterung muss separat installiert und in der php.ini aktiviert werden.

Ressourcen-Gültigkeit: Die übergebene $fsroot-Ressource muss gültig und geöffnet sein. Eine ungültige Ressource führt zu einem Fehler. Stellen Sie sicher, dass das Repository korrekt geöffnet wurde.

Pfadformat: Der Pfad muss mit einem führenden Schrägstrich (/) beginnen und dem internen Repository-Pfad entsprechen, nicht einem Dateisystempfad des Betriebssystems.