Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere Verzeichnisstrukturen abfragen und kopieren

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrere Verzeichnisstrukturen abfragen und kopieren

    Hallo Liebe Freunde des PHP-Forums,

    mein Anliegen müsste ich hier noch einmal genauer erklären.

    Es geht darum:

    Über PHP soll eine bestimmte Verzeichnisstruktur kopiert werden.
    Das Problem ist, es gibt verschiedene Vezeichnisstrukturen. Das bedeutet Ich habe Struktur A (in meinem Fall PackageSourcePath) und Struktur B (PackageResourcesPath) und eine dritte Struktur bei der A&B zu finden sind.

    Hier erstmal mein Code:

    Die Variablen werden in einer gesonderten Funktion festgelegt.

    $this->copyFiles($this->getPackageSourcePath($package), $this->webDirectory);

    $this->copyFiles($this->getPackageResourcesPath($package), $this->vagrantDirectory);


    Danach werden über die eigentliche Funktion die Variablen aufgerufen, mir wurde gesagt ich kann die Variablen einzeln so festlegen und diese werden dann beim Ausführen überschrieben -> Funktioniert allerdings nicht!


    protected function copyFiles($source, $target) {

    if (!is_dir($source)) {
    copy($source, $target);
    $this->filesystem->unlink($source);

    return;
    }

    }

    Meine Frage ist nun also, wie kann ich es realisieren, dass
    Wenn Struktur A vorhanden ist diese kopiert wird? bzw. gleiches wenn Struktur B vorhanden ist und wie funktioniert es wenn beide Strukturen zu finden sind.

    Aktuell bekomme ich immer eine Fehlermeldung das eine Struktur fehlt und deswegen wird nichts ausgeführt.


    Vielleicht kann mir ja jemand helfen.

    Vielen Dank erstmal

  • #2
    copy kann nur Dateien kopieren, nicht ganze Verzeichnisse.
    Du müsstest Deine Funktion anpassen. Übergib Start- und Ziel-Verzeichnis und iteriere dann über die rekursive Start-Verzeichnisstruktur.
    Alle gefunden Ordner müssen dann im Ziel erstmal angelegt und die darin befindlichen Dateien mit copy darein kopiert werden.

    Eine Anleitung, wie Du rekursiv relativ übersichtlich arbeiten kannst, findest Du hier:
    http://www.php-rocks.de/thema/56-ver...t-der-spl.html
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Siehe auch: https://php-de.github.io/jumpto/verz...lesen-rekursiv

      Im www findet man dazu eigenltich auch vieles fertiges.
      The string "()()" is not palindrom but the String "())(" is.

      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Ach Mist, hab nur die halbe Funktion reinkopiert!

        hier nochmal die komplette Funktion:

        PHP-Code:
        protected function copyFiles($source$target) {
        if (!
        is_dir($source))
        copy($source$target);
        $this->filesystem->unlink($source);
        return;
        }
        $it = new RecursiveDirectoryIterator($sourceRecursiveDirectoryIterator::SKIP_DOTS);
        $ri = new RecursiveIteratorIterator($itRecursiveIteratorIterator::SELF_FIRST);

        $this->filesystem->ensureDirectoryExists($target); foreach ($ri as $file) {
        $targetPath $target DIRECTORY_SEPARATOR $ri->getSubPathName();

        (
        $this->extraPackageConfiguration['disableThemeImport'] && strpos($targetPath'/scss/themes/' ) !== false) { continue;
        }

        if (
        $file->isDir()) {
        $this->filesystem->ensureDirectoryExists($targetPath);
        } else {
        $fileName $file->getPathname(); copy($fileName$targetPath);
        }
        }

        In dem Fall funktioniert der Kopier-Vorgang wenn ich einzig eine Struktur als Variable festlege und eben einen Ordner mit der gewählten Struktur kopieren lasse! Mir ging es hauptsächlich darum wie ich das mit mehreren Strukturen möglich machen kann?! Danke Trotzdem erstmal für deine Hilfe!

        Kommentar

        Lädt...
        X