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:

  1. Definicja funkcji `usunKatalogRekurencyjnie`: Funkcja przyjmuje ścieżkę do katalogu jako argument.
  2. 
    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;
    }
    				
  3. 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.
  4. Użycie funkcji: Aby usunąć katalog o nazwie “moj_katalog”, należy wywołać funkcję w następujący sposób:
  5. 
    $sciezka = 'moj_katalog';
    if (usunKatalogRekurencyjnie($sciezka)) {
      echo "Katalog '$sciezka' został usunięty.";
    } else {
      echo "Błąd podczas usuwania katalogu '$sciezka'.";
    }
    				
  6. 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.

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.

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *