Classe permettant de zipper une liste de fichiers ou un dossier (et sous-dossiers) en automatique

Description

Ce code est issu d'une remarque trouvée sur le site http://www.phpcs.com
A la suite d'une source de Malik7934 montrant un formulaire d'upload permettant de créer un fichier ZIP à partir de ce fichier envoyé, un commentaire demandait s'il serait possible de gérer un dossier ou une liste de fichiers de façon automatique

Du coup l'idée m'est venue d'écrire ce code pour mon besoin propre :
faire une sauvegarde Zippée avant une mise à jour ou un test comportant des opérations complexes, etc.

Si le fichier Zip à créer n'est pas nommé, un nom automatique lui est affecté : 'Sauvegarde JJ/MM/AAAA HhMmSs.zip'

Cette classe s'appuie sur l'excellente bibliothèque pclZip découverte par hasard sur le formulaire cité ci-dessus via http://www.phpcs.com.

Le site : http://www.phpconcept.net/phpzip/index.php permet de récupérer la dernière version (2.5 à la rédaction de ces lignes)
ainsi que la documentation. D'autres sources sont d'ailleurs mises à disposition pour gérer d'autres formats de compression...

La classe Zipper a donc pour but de simplifier à l'extrême la création d'une archive ZIP contenant :
- soit une liste de fichiers
- soit un dossier et tout son contenu.

testé sous PHP5 en local, vous devriez pouvoir l'utiliser en PHP4 en modifiant les mots protected par var juste en-dessous de ces lignes d'explication. Je ne l'ai pas testé sur une serveur Linux !

Les methodes fournies permettent d'en modifier le fonctionnement, mais quasiment rien n'est obligatoire...

REMARQUE : merci aux gourous de ne pas m'assassiner, ce code est ma première contribution faite essentiellement pour remercier tous ceux dont j'ai pu lire et utiliser des bouts de code voire parfois la totalité dans mes projets.

AUTRE REMARQUE : ce code est aussi mon premier code objet... ma première classe. Issu de la vieille école de programmation, j'ai mis longtemps à trouver un intérêt aux objets (j'ai honte...)

Merci de vos critiques et remarques dès l'instant où c'est constructif !

Source / Exemple :


// Voilà un appel : le plus simple possible :

$archive = new Zipper();				// Création de l'objet
$archive->DefinitNomDossierAZipper('Galeries');		// Indique le dossier à explorer et dont le contenu doit être 'Zippé'
if(! $archive->ZipperFichiers()){ echo 'ECHEC'; }	// Affiche un message en cas d'échec

Conclusion :


Je pensais éventuellement à envoyer ce ZIP par mail en fin de traitement si on le demande : cela étant, il y a plein de classes disponibles ici capable de le faire...

Codes Sources

A voir également

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.