2016-08-22 4 views
-3

Je suis en train d'écrire et d'utiliser des classes php. Ceci est ma classe:Lecture Dir PHP classe - 1 seul fichier par retour

class UseDir 
{ 

    public $varReadFilesFromDir;   

    public function readDir(){ 

     if (is_dir($this->varReadFilesFromDir)) 
     { 
      if ($dirHandler = opendir($this->varReadFilesFromDir)) 
      { 
       while (($getFile = readdir($dirHandler)) !== false) 
       { 
        if($getFile != "." && $getFile != ".."){ 

         if (strpos($getFile, '.xml') === false){ 

          continue; 
         } 

         //echo "<p>$getFile</p>"; 
         //return $getFile; 

        } 
       } 
      } 
      closedir($dirHandler); 
     } 
    } 

} 

$new_UseDir = new UseDir(); 

$new_UseDir->varReadFilesFromDir = "C:\dir\files"; 

$new_UseDir->readDir(); 

Je veux obtenir chaque fichier ici et que vous voulez utiliser une autre classe où je peux faire quelque chose avec le fichier, plus tard. Si je décommente //echo "<p>$getFile</p>"; il montre tous les noms de fichiers.

Si je décommente //return $getFile; et édite echo $new_UseDir->readDir(); il montre seulement le premier fichier du répertoire.

Pourquoi je n'ai qu'un seul fichier?

salutations, ebody

+1

car une fonction peut seulement ** renvoyer ** une variable, mais elle peut ** imprimer ** un nombre infini. Bien sûr, vous pouvez construire un tableau et retourner le tableau. – developerwjk

+0

Construire un tableau avec ces entrées. Une instruction 'return' quittera la fonction ou la méthode immédiatement. –

+1

Essayez 'glob()' ou 'scandir()' à la place. –

Répondre

0

Vous n'obtiendrez un fichier, car readdir ne retourne un nom de fichier par appel. Si vous voulez tous les fichiers dans le répertoire, vous devez stocker chaque nom de fichier retourné dans, disons, un tableau et retourner ce tableau à la place.