Hey zusammen,
in meinem aktuellen Projekt kommt es vor, dass ich ein Ordner und alle Ordner und Dateien darin löschen muss.
Der Ordner ist so aufgebaut:
Code
files/
files/text
files/pdf
files/text/test.txt (und viele weitere Text-Dateien)
files/pdf/test.pdf (und viele weitere PDF-Dateien)
Nun habe ich nach einer Lösung gesucht wie ich dies umsetzen kann. Ich kam dann dazu 3 Funktionen zu schreiben, die nach und nach alles löschen. Zuerst die Dateien, dann die Ordner auf zweiter Ebene und zum Ende den Hauptordner in dem alles drin war.
Nun frage ich mich, ob es dafür nicht eine besser Lösung gibt, die ich in eine Funktion packen kann. Habt ihr Vorschläge?
Dies ist mein Code:
PHP
function deleteDir(string $dir){
$firstDirLevel = scandir($dir);
if(deleteFolders($firstDirLevel, $dir)){
if(rmdir($dir)){
return true;
}else{
return false;
}
}
return false;
}
function deleteFolders(array $firstDirLevel, string $dir) : bool{
foreach($firstDirLevel as $key => $folders){
if($folders !== "." && $folders !== ".."){
$secondLevelDir = $dir . $folders;
$secondDirLevel = scandir($secondLevelDir);
if(deleteFiles($secondDirLevel, $secondLevelDir)){
rmdir($secondLevelDir);
}
}
}
return count(scandir($dir)) < 3 ? true : false;
}
function deleteFiles(array $secondDirLevel, string $dir) : bool{
foreach($secondDirLevel as $key => $files){
if($files !== "." && $files !== ".."){
unlink($dir . "/" . $files);
}
}
return count(scandir($dir)) < 3 ? true : false;
}
Alles anzeigen