Copier un repertoire ou deplacer un repertoire

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 849 fois - Téléchargée 14 fois

Contenu du snippet

Alors vu que j'ai eu du mal à trouver ce genre de script j'en ai fait un et je le met à porter de tout le monde.
C'est donc une fonction qui permet de déplacer (ou copier) un repertoire et son contenu dans un autre repertoire.

Source / Exemple :


<?php
/*-------------------------------------------------------------------------------------
						FONCTION PRINCIPAL DEPLACER REPERTOIRE
-------------------------------------------------------------------------------------*/
function Deplacer_Repertoire($Source,$Cible,$SupprimerOriginal=false){
	if(substr($Source,-1,1)!=DIRECTORY_SEPARATOR){$Source.=DIRECTORY_SEPARATOR;}
	if(substr($Cible,-1,1)!=DIRECTORY_SEPARATOR){$Cible.=DIRECTORY_SEPARATOR;}
	
	
	$Rep_Source = opendir($Source);   
      
	while($Contenu = readdir($Rep_Source)){   
		if($Contenu != "." and $Contenu!=".."){ 
			if(is_dir($Source.$Contenu) ){   
				mkdir($Cible.$Contenu);
				Deplacer_Repertoire($Source.$Contenu,$Cible.$Contenu);
				if($SupprimerOriginal){
					rmdir($Source.$Contenu);
				}
			}else{ 
				if($SupprimerOriginal){
					rename($Source.$Contenu,$Cible.$Contenu);
				}else{
					copy($Source.$Contenu,$Cible.$Contenu);
				} 
			}   
		}   
      
    }   
      
     closedir($Rep_Source);   
	if($SupprimerOriginal){
		rmdir($Source);
	}  

}
/*-------------------------------------------------------------------------------------
						COMMANDE DE DEPLACEMENT
-------------------------------------------------------------------------------------*/
Deplacer_Repertoire(dirname(__FILE__).DIRECTORY_SEPARATOR."melrose".DIRECTORY_SEPARATOR, dirname(__FILE__).DIRECTORY_SEPARATOR."Ok".DIRECTORY_SEPARATOR);
?>

A voir également

Ajouter un commentaire

Commentaires

Messages postés
40
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
25 août 2009

Merci pour ces pistes d'amélioration de ma source.
Je note :
- Vérification des droits.
- SPL
- Revoir le nom de la fonction
- Exeption
- Schéma de Classe
Merci bien prochaine version la semaine prochaine !
Cordialement
TheWeasel47
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Sur ta source, ou plutôt fonction, il manque de nombreux éléments de vérification importantes, telles que vérifier si le répertoire dans lequel tu déplace à les droits en écriture, si la copie/suppression à réussi, etc.

De plus, avec l'arrivée de PHP 5.2 (dois-je vraiment dire la date?), est arrivé la SPL, qui te permet dans ton cas de parcourir un répertoire de manière beaucoup plus performante que les vieux opendir/readdir. Regarde du côté de DirectoryIterator.

Le nom de ta fonction ne convient pas. En effet, outre le fait qu'elle ne soit pas anglaise (mais ce n'est pas un problème en soi ;)), le terme "déplacer" perd tout son intérêt lorsque tu met le dernier paramètre à false. En effet, tu ne fait plus un déplacement mais une copie !

J'aurais plus vu une classe statique, avec une méthode cp et une méthode mv, qui appèlent toute deux une méthode privée qui s'occupe de déplacer récursivement ou pas un fichier/répertoire, en fonction des paramètres données.
Avec ceci j'aurai joué sur la classe DirectoryIterator pour le parcours de dossier/fichier et j'aurais lancé des exceptions si je n'avais pas le droit de copier/déplacer/supprimer un élément.

Voilà quelques idées d'améliorations ;)
Messages postés
40
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
25 août 2009

Bah ouais je sais bien ce n'est pas la première source que j'ajoute mais pour celle la j'ai eu un bug quand j'ai cliqué sur prévisualisation.
IL me marqué que la source été désactivé.
pour info j'étais sous IE :D
Bon Courage pour la correction.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
62
Lorsque tu ajoutes une source sur le site, il te faut confirmer son ajout pour qu'elle soit visible par tous...

Ajout => Description + Fichiers + etc. => Prévisualisation => Mot clés => Terminé

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.