POO - RecursiveDirectoryIterator [Résolu]

Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Dernière intervention
23 octobre 2014
- - Dernière réponse : inwebo
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Dernière intervention
23 octobre 2014
- 23 avril 2011 à 19:38
Bonjour à tous,

Je suis en train de tester la SPL de PHP et plus précisément la class RecursiveDirectoryIterator. J'ai du mal à comprendre son fonctionnement et les retours effectués.

Organisation du répertoire
:
[list]
[*] /
[*] /test/1/
[*] /test/2/
[*] /test/3/
[*] /test/4/
[*] inc.class.my.files.php
[*] index.php
/list
Chaque dossier est vide.

Le contenu des fichiers


inc.class.my.files.php

<?php

Class MyRecursiveFiles extends RecursiveDirectoryIterator {


public $path;
public $nbrFiles;
public $nbrDirs;
public $totalSize;
public $ret = array();

public function __construct( $path ) {

$this->totalFiles	 = 0 ;
$this->totalDirs	 = 0 ;

$it =  new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $path, FilesystemIterator::SKIP_DOTS ) );

while( $it->valid() ) {

if( $it->isDir() ) {
echo  $it->key();
}

$it->next();
}		
}
}
?>


index.php
<?php

include('inc.class.my.files.php');

try {
$path  = 'test/';
$listAllItems = new MyRecursiveFiles( $path );

}
catch ( Exception $e ) {
echo $e->getMessage();
}

?>

Retour du script :


test\1


Retour attendu

test\1
test\2
test\3
test\4


Pour quelles raisons cette classe liste-elle seulement le premier élément ?
Ne doit-elle pas parcourir l'ensemble des dossiers ?
Pourquoi n'indexe t-elle pas les dossiers vides ?

Le documentation est assez légère dans la SPL, j'ai bien fait le tour des différentes méthodes de parcours de d'arborescence, glob, globiterator, scandir etc ...

Merci d'avance


_________________________________
( $toBe || !$toBe ) = $this->Question();
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
403
Date d'inscription
mercredi 28 octobre 2009
Dernière intervention
23 mars 2012
3
Merci
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);



______________________________________________________________________

Merci phpAnonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de phpAnonyme
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Dernière intervention
23 octobre 2014
0
Merci
Merci,

concis et efficace !
Peut-être aurais tu le temps de me faire un rapide topo sur ce qu'il se passe ?

Cordialement

________________________________________
( $toBe || !$toBe ) = $this->Question();
Commenter la réponse de inwebo

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.