PHP: copierea şi ştergerea directoarelor


În timp ce PHP oferă diverse funcţii în mod nativ pentru a frunzări directoarele, pentru a lucra pe fişiere, îi lipsesc două funcţii de care totuşi mulţi pot avea nevoie: copierea unui întreg director, respectiv ştergerea lui. Evident, există diverse soluţii, diverse funcţii care se găsesc pe net, iar eu folosesc două anume, pe care m-am gândit să le pun aici, pentru că sunt verificate şi poate vor prinde bine cuiva, cândva.

Dat fiind că le folosesc de ceva timp, nu mai sunt sigur de sursa lor, dar căutând pe Google s-ar putea ca pentru primul sursa să fie aceasta, iar pentru al doilea aceasta.

function copy_directory($source,$destination){
	if(is_dir($source)){
		@mkdir($destination);
		$directory=dir($source);
		while(FALSE!==($readdirectory = $directory->read())){
			if ($readdirectory=='.' || $readdirectory=='..'){
				continue;
			}
			$PathDir = $source.'/'.$readdirectory; 
			if(is_dir($PathDir)){
				copy_directory($PathDir,$destination.'/'.$readdirectory);
				continue;
			}
			copy($PathDir,$destination.'/'.$readdirectory);
		}
		$directory->close();
	}else {
		copy($source,$destination);
	}
}

function recursive_remove_directory($directory, $empty=FALSE){
    if(substr($directory,-1)=='/'){
        $directory = substr($directory,0,-1);
    }
    if(!file_exists($directory) || !is_dir($directory)){
        return FALSE;
    }
	elseif(is_readable($directory)){
        $handle = opendir($directory);
        while(FALSE!==($item=readdir($handle))){
            if($item!='.' && $item!='..'){
                $path = $directory.'/'.$item;
                if(is_dir($path)){
                    recursive_remove_directory($path);
                }
				else{
                    unlink($path);
                }
            }
        }
        closedir($handle);
        if($empty==FALSE){
            if(!rmdir($directory)){
                return FALSE;
            }
        }
    }
    return TRUE;
}

Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (4 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *