¿Cómo puedo recuperar the full directory tree
usando SPL
?
De forma predeterminada, el RecursiveIteratorIterator
usará LEAVES_ONLY
para el segundo argumento para __construct
. Esto significa que solo devolverá los archivos. Si desea incluir archivos y directorios (al menos eso es lo que consideraría un árbol de directorios completo ), tendría que hacer:
$iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST );
y luego puedes foreach
sobre eso. Si desea devolver el árbol de directorios en lugar de mostrarlo, puede almacenarlo en una matriz, por ejemplo
foreach ($iterator as $fileObject) { $files[] = $fileObject; // or if you only want the filenames $files[] = $fileObject->getPathname(); }
También puede crear la matriz de $fileObjects
sin el foreach
haciendo:
$files[] = iterator_to_array($iterator);
Si solo quiere que se devuelvan directorios, foreach
el $iterator
esta manera:
foreach ($iterator as $fileObject) { if ($fileObject->isDir()) { $files[] = $fileObject; } }
Puedes hacer o hacer todo lo que quieras
foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path)) as $file) { /* @var $file SplFileInfo */ //... }