Of_directoryiterator : iterateur de répertoires avec filtres et tris

Soyez le premier à donner votre avis sur cette source.

Vue 3 345 fois - Téléchargée 172 fois

Description

Cette classe va vous permettre de manipuler les répertoires et les fichiers, mais aussi de créer vos propres filtres : voir les 2 filtres fournis en exemple à la fin de la classe.

le but est également de faire des "tris" ascendants et descendants sur toutes les items trouvés.

Pour l'instant il n'a que 2 possibilités de tris :
- par nom de fichier/répertoire trouvé :
$instant->setSortAlpha(OF_DirectoryIterator::SORT_DESC); // ordre inverse

- par date de modification de fichier :
$instant->setSortMTime(OF_DirectoryIterator::SORT_ASC);

Soit je rajouterai de nouvelles méthodes de tris, soit je vais faire un système similiaire aux filtres pour créer ses tris personnalisés.

Conclusion :


Cette classe est utilisée en tant que "plugin" dans mon framework.

C'est pour cela que je laisse libre au programmeur de faire son propre système d'inclusion des filtres.

2 excellentes sources du même type sur ce site :
http://www.phpcs.com/codes/PHP5-SMARTDIR-ITERATEURS-PHP-LECTURE-INTELLIGENTE-REPERTOIRE_40393.aspx

http://www.phpcs.com/codes/LISTING-REPERTOIRE-AVEC-FILTRES_45125.aspx

Codes Sources

A voir également

Ajouter un commentaire Commentaires
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 déc. 2007 à 22:43
Salut,

Pas le temps de regarder en détails pour le moment... Mais comme j'ai suivi la discussion sur le forum, je jetterai un oeil quand je serai de retour chez moi.
Et merci pour le clin d'oeil ;)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 déc. 2007 à 14:34
Hello,

quelques remarques :
- à mon sens, tu n'utilises pas correctement getChildren(). Regarde la façon dont cette méthode est codée dans la SPL. Tu ne devrais pas avoir à rentrer dans plusieurs boucles pour récupérer les enfants. Une seule boucle générale devrait suffire. Quitte à mettre un flag indiquant si oui ou non on travaille en recursif. Si on ne connait pas la profondeur des répertoires, on ne peut pas les lister avec ton code. Pas simplement en tous cas.
Avec RecursiveDirectoryIterator, une boucle suffit pour liste tous les répertoires et sous-répertoires. Inspire-t-en. L'avantage de ta technique étant qu'on peut appliquer différents tris ou filtres en fonction du niveau. Mais je doute de l'utilité réelle du bin's.
- je ne comprends pas ta notion de optionValues dans ta classe de filtre?
- encore une fois, je trouve que le __call() est de trop. Autant passer à une méthode générique sort() une constante indiquant le type de tri que l'on veut : SORT_MTIME_ASC, SORT_MTIME_DESC etc...ça simplifie nettement les appels. Mais bon, ça, ça reste très subjectif :-)

Sino,, c'est très sympa :-)
Et merci pour la petite dédicace pour Neige et moi :-)

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.