Видалення каталогу з файлами в php

Видалення каталогу з файлами в PHP

У попередній статті ми з Вами розбирали функції для роботи з каталогами в PHP, і там я познайомив Вас з функцією rmdir (), яка видаляє каталог. Однак, я сказав, що таким способом вийде видалити тільки порожню директорію, а ось як видалити каталог з файлами, Ви дізнаєтеся зараз.

Принцип дуже простий: щоб видалити каталог з файлами, треба видалити спочатку всі файли, а також всі підкаталоги. Усередині підкаталогів можуть бути також файли і інші підкаталоги, їх також треба очистити. Загалом, складність полягає в тому, що глибина каталогів може бути дуже великий. І очевидно, що напрошується рекурсія - виклик функції всередині самої себе.




Незважаючи на гадану складність алгоритму, реалізація дуже проста і прозора:

lt ;?php
function removeDirectory($ dir){
if($ objs = glob($ dir."/ *")){
foreach($ objs as $ obj){
is_dir
($ obj)? removeDirectory($ obj): unlink($ obj) -
}
}
rmdir
($ dir) -
}
?gt;



Постараюся пояснити зрозумілою мовою алгоритм роботи даної функції. Насамперед ми отримуємо список всіх файлів усередині заданої директорії. Якщо їх там немає, то відразу видаляємо її. Якщо вони є, то починаємо по-черзі перебирати. Якщо елемент є файлом, то просто видаляємо його (unlink ($ obj)). Якщо ж це каталог, то викликаємо знову нашу функцію, передавши цей каталог. Це і є рекурсія: функція викликає сама себе. Після виклику функцією самої себе все починається заново, але вже з іншого Директорією. У ній також видаляються всі файли, а всі її директорії відправляються знову в цю функцію. Коли все директорії і файли видалені, у нас віддаляється вже порожній каталог.

Я Вам скажу так, даний алгоритм не так корисний з точки зору практики (не так часто доводиться видаляти каталоги з файлами в PHP), Скільки корисний для розвитку Вашого мислення. Це дуже простий алгоритм і вирішує він вельми і вельми складне завдання. Тому вчіться складати алгоритми - це найголовніше в будь-якій мові програмування.

Поділися в соціальних мережах:

Схожі
Команда move - перейменування або переміщення файлів і каталогівКоманда move - перейменування або переміщення файлів і каталогів
Команда append - приєднати каталог до поточногоКоманда append - приєднати каталог до поточного
Загальні папки linuxЗагальні папки linux
Команда compact - відображення або зміна параметрів стиснення файлів в розділах ntfs windows.Команда compact - відображення або зміна параметрів стиснення файлів в розділах ntfs windows.
Команда del (erase)Команда del (erase)
Команда find в linuxКоманда find в linux
Рекурсія в phpРекурсія в php
Popd - перейти в каталог, шлях якого був збережений при виконанні команди pushd.Popd - перейти в каталог, шлях якого був збережений при виконанні команди pushd.
Як видалити користувача в linuxЯк видалити користувача в linux
Команда md (mkdir) - створити каталогКоманда md (mkdir) - створити каталог
» » Видалення каталогу з файлами в php