Liste tous les files dans un directory

En utilisant symfony, j'essaie de créer une page répertoriant toutes les images dans un dossier Web

J'ai créé l'action suivante:

$dir = 'images/blog'; $fulldir = "{$_SERVER['DOCUMENT_ROOT']}/$dir"; $d = @dir($fulldir) or die('Failed opening directory for reading'); while(false !== ($entry = @$d->read())) { $this->imagesBlog[] = array( "file" => "/$dir/$entry", "size" => getimagesize("$fulldir/$entry")); $d->close(); } 

Et le model suivant:

 foreach($imagesBlog as $img) echo '<img class="photo" src="'.$img['file'].'" ' . $img['size'][3].'>'."\n"; 

Cela semble fonctionner, mais renvoie une seule image à partir d'un dossier contenant plusieurs files.

 print_r($imagesBlog): sfOutputEscaperArrayDecorator Object ( [count:sfOutputEscaperArrayDecorator:private] => 1 [value:protected] => Array ( [0] => Array ( [file] => /images/blog/FM-stupidest.png [size] => Array ( [0] => 300 [1] => 252 [2] => 3 [3] => width="300" height="252" [bits] => 8 [mime] => image/png ) ) ) [escapingMethod:protected] => esc_specialchars ) 

Aidez-moi ! Je perds mon esprit ici.

Ne serait-il pas préférable d'appeler $d->close(); en dehors de la boucle while?

Je pense que c'est la raison, après avoir trouvé la première image, la ressource sera fermée et la prochaine lecture () échouera.

Pour quelqu'un d'autre trébuchant sur cette publication tout en recherchant la réponse définitive, il y a une class Symfony qui s'occupe de ceci pour vous: sfFinder (pour Symfony 1.4).

http://www.symfony-project.org/api/1_4/sfFinder

 $finder = new sfFinder; foreach($finder->in(sfConfig::get('sf_web_dir') . '/images/projects/') AS $file) { if(is_file($file)) { echo $file; } } 

Pour Symfony 2, il y a une publication sur le blog de Fabien Potencier ici: http://fabien.potencier.org/article/43/find-your-files

Vous pouvez utiliser glob , c'est assez simple:

 $path = 'images/blog/'; $files = glob($path.'*.{jpg,gif,png}', GLOB_BRACE);