В РНР для удаления файла существует функция unlink(), для удаления пустого каталога - rmdir(). Что делать если нужно рекурсивно удалить папку со всеми файлами и подкаталогами. На помощь приходит glob() в связке с array_map().
Заметьте, что в функции нет ни единого цикла.
function removeDir($path) {
return is_file($path)
? @unlink($path)
: array_map('removeDir',glob('/*')) == @rmdir($path);
}
Пример вызова
$path = $_SERVER['DOCUMENT_ROOT'].'/test'; removeDir($path);
Похожие публикации:
- Отдать PDF на скачку
При проектировании одного проекта столкнулся с проблемой некоторых браузеров открывать PDF-документ непосредственно в окне браузера. Это чревато тем, что вы... - Умный переключатель языков
Обычно переключение языков на сайте сделано обычными ссылками вида |ru|en|cn|, которое никак не отслеживает на какой странице пользователь решил поменять...

Спасибо за идею, но у меня эта функция не сработала так, как хотелось бы. Я немного подкорректировал функцию и вызов. Теперь она удаляет указанную папку со всеми подпапками и файлами:
function removeDir($path) {return is_file($path)?
@unlink($path):
array_map('removeDir',glob($path."/*"))==@rmdir($path);
}
// Пример вызова$path = $_SERVER['DOCUMENT_ROOT'].'/test';
removeDir($path);
Да, вы правы — так будет лучше. Поправил в статье.
А если removeDir в классе определять? Как указывать первый параметр array_map?
Все достаточно просто
array_map(array($this, 'removeDir'), glob(...))