Usuwanie katalogów
Założenie: Nauczymy się, jak usuwać katalogi i ich zawartość w PHP.
Krok po kroku:
- Usuwanie pustego katalogu: Funkcja
rmdir()
usuwa pusty katalog. - Usuwanie katalogu z zawartością: Funkcja
rmdir()
nie zadziała, jeśli katalog nie jest pusty. Do usunięcia katalogu z zawartością potrzebujemy rekurencyjnego rozwiązania.
$katalog = 'sciezka/do/pustego/katalogu';
if (rmdir($katalog)) {
echo "Katalog '$katalog' został usunięty.";
} else {
echo "Błąd podczas usuwania katalogu '$katalog'.";
}
Ten kod sprawdza, czy katalog istnieje i próbuje go usunąć. rmdir()
zwraca true
w przypadku sukcesu i false
w przypadku błędu.
function usunKatalogRekurencyjnie($katalog) {
if (!is_dir($katalog)) return false;
$pliki = scandir($katalog);
foreach ($pliki as $plik) {
if ($plik == '.' || $plik == '..') continue;
$sciezka = $katalog . '/' . $plik;
if (is_dir($sciezka)) {
usunKatalogRekurencyjnie($sciezka);
} else {
unlink($sciezka);
}
}
return rmdir($katalog);
}
$katalog = 'sciezka/do/katalogu/z/zawartoscia';
if (usunKatalogRekurencyjnie($katalog)) {
echo "Katalog '$katalog' i jego zawartość zostały usunięte.";
} else {
echo "Błąd podczas usuwania katalogu '$katalog'.";
}
Ta funkcja najpierw sprawdza, czy podana ścieżka jest katalogiem. Następnie rekurencyjnie przechodzi przez wszystkie pliki i podkatalogi, usuwając je za pomocą unlink()
(dla plików) i wywołując samą siebie (dla podkatalogów). Na końcu usuwa sam katalog.
Pamiętaj, aby zawsze uważać podczas usuwania katalogów i ich zawartości. Ten przykład pokazuje podstawowe metody, ale w rzeczywistych aplikacjach należy dodać obsługę błędów i walidację danych wejściowych.