Rekurencyjne usuwanie katalogów
Założenie: Napiszemy funkcję PHP, która rekurencyjnie usunie katalog wraz ze wszystkimi jego podkatalogami i plikami.
Krok po kroku:
- Definicja funkcji `usunKatalogRekurencyjnie`: Funkcja przyjmuje ścieżkę do katalogu jako argument.
- Wyjaśnienie kodu: Funkcja najpierw sprawdza, czy podana ścieżka jest katalogiem. Następnie używa `scandir` aby pobrać listę plików i podkatalogów w katalogu. Pętla `foreach` iteruje przez każdy element. Jeśli element jest katalogiem, funkcja wywołuje się rekurencyjnie. W przeciwnym wypadku, `unlink` usuwa plik. Na końcu, `rmdir` usuwa pusty katalog.
- Użycie funkcji: Aby usunąć katalog o nazwie “moj_katalog”, należy wywołać funkcję w następujący sposób:
- Ważne uwagi: Pamiętaj, że usunięcie katalogu jest operacją nieodwracalną. Upewnij się, że masz kopię zapasową ważnych danych przed użyciem tej funkcji. Dodatkowo, upewnij się, że skrypt ma odpowiednie uprawnienia do usuwania plików i katalogów.
function usunKatalogRekurencyjnie($sciezka) {
if (!is_dir($sciezka)) {
return false; // Sprawdzenie, czy podana ścieżka jest katalogiem
}
$pliki = scandir($sciezka);
foreach ($pliki as $plik) {
if ($plik != "." && $plik != "..") {
$sciezkaPliku = $sciezka . DIRECTORY_SEPARATOR . $plik;
if (is_dir($sciezkaPliku)) {
usunKatalogRekurencyjnie($sciezkaPliku); // Rekurencyjne wywołanie dla podkatalogów
} else {
unlink($sciezkaPliku); // Usuwanie pliku
}
}
}
rmdir($sciezka); // Usuwanie katalogu po usunięciu zawartości
return true;
}
$sciezka = 'moj_katalog';
if (usunKatalogRekurencyjnie($sciezka)) {
echo "Katalog '$sciezka' został usunięty.";
} else {
echo "Błąd podczas usuwania katalogu '$sciezka'.";
}
Ten przykład pokazuje podstawy rekurencyjnego usuwania katalogów w PHP. Zachęcamy do dalszego zgłębiania tematu i eksperymentowania z różnymi funkcjami związanymi z obsługą plików i katalogów.