2017-08-30 2 views
0

Ich habe den folgenden Code, um Dateien in einem Verzeichnis namens robofile-Vorlagen in meinem Quellbaum zu finden. Jetzt verpacke ich die App in eine Phar-Datei.Datei im Phar mit Symfony Finder finden

Kann ich einen ähnlichen Code verwenden, um über die in der phar-Datei enthaltenen Dateien zu iterieren, oder muss ich sie neu schreiben?

protected function getTemplateRoboFiles() { 
    $base = dirname(__DIR__); 

    $templates = []; 

    $finder = new Finder(); 
    $finder->directories()->in($base)->name('robofile-templates'); 
    foreach ($finder as $directory) { 
     $fileFinder = new Finder(); 
     $fileFinder->files()->in($directory->getRealPath())->name('*.php'); 
     foreach ($fileFinder as $file) { 
      $templates[ $file->getBasename('.php') ] = $file->getRealPath(); 
     } 
    } 

    return $templates; 
} 

EDIT: Interessant genug, opendir/readdir Arbeit im Inneren des PHAR. Ich könnte zurückgreifen, um diese grundlegenden Dateifunktionen zu verwenden, aber ich denke, dass Symfony Aktenfinder auf den gleichen Grundbefehlen aufgebaut wird?

Antwort

0

Symfony Finder funktioniert wie erwartet, auch Dateien in phars finden.

Mein Problem war in einem anderen Teil des Prozesses: Ich baute den Phar mit Composer-Installation und mein Composer.lock war nicht auf Daten. Da die Datei, die ich im Archiv finden wollte, in einem Composer-Modul war, wurde sie einfach nicht im Phar enthalten.

Wer stolpert über das: Überprüfen Sie besser, ob Ihre Datei wirklich in den Phar verpackt ist.