Bonjour, j'essaie d'utiliser une fonction récursive qui me permet de lister les dossiers/sous-dossiers et fichiers d'une arborescence.
J'ai mis cette fonction en component, et le problème est que cette fonction ne veux pas se rappeler, me disant qu'elle n'existe pas.
J'ai essayer avec plusieurs autres fonctions récursives et toujours le même problème, alors qu'un ami avec moi n'a pas ce soucis avec ses fonctions.

voici le code de la fonction :

function list_directory_contents($dir){

         $dh = new DirectoryIterator($dir);    
         foreach ($dh as $item) {
             if (!$item->isDot()) {
                if ($item->isDir()) {
                    list_directory_contents("$dir/$item");
                } else {
                    echo $dir . "/" . $item->getFilename();
                    echo "<br>";
                }
             }
          }
    }

Merci d'avance pour vos réponses.

6 réponses


Helongh
Auteur
Réponse acceptée

J'ai fais la première solution, c'est celle annoncée dans la doc.
Ah peut-être dois-je aussi la rappeler comme ça dans la fonction !

EDIT : J'ai réessayé de le mettre en helper et de l'appeler via la vue et ça fonctionne.. Merci beaucoup pour ton aide !

C'est quoi tes messages d'erreurs ?

Helongh
Auteur
Error: Call to undefined function list_directory_contents() 
File: C:\Users\ **\Documents\EasyPHP-DevServer-13.1VC9\data\localweb\** \app\Controller\Component\TreeComponent.php 
Line: 16

La ligne 16 étant celle ou la fonction se rappelle elle même. De plus, j'ai essayé d'abord en helper vu que j'utilise un echo, mais le résultat est le même.

L'as tu déclaré dans ton AppController ?

class AppController extends Controller{
    public $components = array('Tree');
    ...
}
Helongh
Auteur

Oui il est bien déclaré.

Ah tu fait : $this->Tree->list_directory_contents() ou seulement list_directory_contents() ?