foreach(new RecursiveIteratorIterator(new RecursiveDirectoryIterator(".")) as $file) {
echo "$file\n";
}
C'è un modo per questo codice di non gettare UnexpectedValueException "non è riuscito ad aprire dir: Permesso negato" ogni volta che c'è una sottodirectory illeggibile all'interno directory tento di elencare?Posso fare in modo che RecursiveDirectoryIterator salti le directory illeggibili?
UPDATE
Conversione foreach()
a while()
e chiamando esplicitamente Iterator::next()
avvolto in try() catch {}
non aiuta. Questo codice:
$iter = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("."));
while($iter->valid()) {
$file = $iter->current();
echo "$file\n";
try {
$iter->next();
} catch(UnexpectedValueException $e) {
}
};
è un ciclo infinito se è presente una sottodirectory illeggibile.
avvolgerlo in blocchi catch try. e sembra essere una cattiva idea creare nuovi oggetti proprio all'interno di foreach parentesi – s3v3n
Per elaborare sul commento di s3v3n. Sembra essere una cattiva idea, perché quello che sta succedendo è molto difficile da determinare. Il buon codice non è sempre il codice più piccolo o più veloce. – DampeS8N
Non è difficile determinare cosa succede se si conosce RecursiveIteratorIterator e RecursiveDirectoryIterator e qual è il loro caso d'uso comune. È un codice semplice. –