PHP del – Functie van de maand – mei 2019

Een functie bestandssysteem gerelateerd, het verwijderen van een bestand of complete directory. Dit is een recursieve functie, een soort “deltree” of “rm -r” commando.

/**
* Remove file or complete directory
* 
* @param mixed $file
*/
function del($file) {
	$delim="/";

    //check if file exists
	if (!@is_link($file) && !file_exists($file)) return false;

    //check if file is directory
	if (!@is_link($file) && @is_dir($file)) {
        //try to open the directory
		if ($dir = @opendir($file)) {
			$error = false;
            //loop through all files and directory's in this directory and recursively delete
			while (($f = readdir($dir)) !== false) {
				if ($f != '.' && $f != '..' && !del($file . $delim . $f)) {
					$error = true;
				}
			}
			closedir($dir);

            //if no delete error occured from previous files / directories, remove the directory
			if (!$error) return @rmdir($file);

            //return the opposite of error, if error occured (=true) then return false
			return !$error;
		} else {
            //unable to open directory
			return false;
		}
	} else {
        //it's a file, just remove the file using unlink
		return @unlink($file);
	}
}