POO - RecursiveDirectoryIterator

Eléphanteau du PHP | 45 Messages

23 avr. 2011, 18:12

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 :

/
/test/1/
/test/2/
/test/3/
/test/4/
inc.class.my.files.php
index.php

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();
}

?>
Retours

Retour du script :

Code : Tout sélectionner

test\1
Retour attendu

Code : Tout sélectionner

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

ViPHP
ViPHP | 5462 Messages

24 avr. 2011, 12:22

il faut rajouter l'option RecursiveIteratorIterator::SELF_FIRST

Eléphanteau du PHP | 45 Messages

18 mai 2011, 22:47

Merci pour ce conseil avisé !