PHP SPL RecursiveDirectoryIterator RecursiveIteratorIterator recuperando el árbol completo

¿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 */ //... } 
Intereting Posts