Опираясь на Комментарий разработчика Pixel , фрагмент с использованием SPL может выглядеть следующим образом:
$files = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::CHILD_FIRST
);
foreach ($files as $fileinfo) {
$todo = ($fileinfo->isDir() ? 'rmdir' : 'unlink');
$todo($fileinfo->getRealPath());
}
rmdir($dir);
Примечание: нет проверка исправностии использует флаг SKIP_DOTS, введенный в FilesystemIterator в PHP 5.3.0.Конечно, $todo
может быть if
/ else
.Важным моментом является то, что CHILD_FIRST
используется для перебора дочерних элементов (файлов) перед их родительскими элементами (папками).