Fonction récursive qui ne fonctionne pas

Par Helongh, il y a 12 ans


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

Airday, il y a 12 ans

C'est quoi tes messages d'erreurs ?

Helongh, il y a 12 ans
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.

Airday, il y a 12 ans

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

class AppController extends Controller{
    public $components = array('Tree');
    ...
}
Helongh, il y a 12 ans

Oui il est bien déclaré.

Airday, il y a 12 ans

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

Helongh, il y a 12 ans

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 !