Class et récursivité [Résolu]

Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
- - Dernière réponse : coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
- 7 avril 2008 à 14:29
Bonjour,
Quelqu'un peut m'expliquer pourquoi ma classe ne fonctionne pas? ("Connexion réinitialisée")
class Folder {
        private $sName;                     // nom du dossier
        private $iSize = 0;                 // taille en octets
        private $sPath = "";                // chemin
       
       
       
        //############################## accesseur ##########################################
        function getName() { return $this->sName;}
        // retourne la taille de tous les sous-répertoire et fichiers
        function getSize() {
            $racine=@opendir($this->sPath);
           
            while($dossier=@readdir($racine)){
                if(!in_array($dossier, Array("..", "."))){
                    if(is_dir("".$this->sPath."/$dossier")){
                        $this->iSize+=$this->getSize("".$this->sPath."/$dossier");
                    }else{
                        $this->iSize+=@filesize("".$this->sPath."/$dossier");
                    }
                }
            }
            @closedir($racine);
           
            return $this->unite($this->iSize, 2);
        }
       
    }
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
30
3
Merci
salut

t'as une recursivite trop grosse, ca faut sauter la stack.

tu devrais virer tes @, et mettre une verification d'erreur, voir si tu n'as pas de dossiers qui contiendraient des liens recursifs, et ajouter des echo et fflush pour voir quels dossiers sont appelles.

/**
* @author coucou747 <coucou747@hotmail.com>
* @see irc://cominweb.uni-irc.net/#programmation
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 203 internautes nous ont dit merci ce mois-ci

Commenter la réponse de coucou747
Messages postés
260
Date d'inscription
jeudi 31 mai 2007
Statut
Membre
Dernière intervention
5 novembre 2010
1
0
Merci
Salut !

Je ne m'y connais pas vraiment niveau dossiers, mais si tu n'a pas de constructeur, ton dossier d'origine est "".
[mailto:$racine=@opendir($this->sPath $racine=@opendir($this->sPath]); => $racine=@opendir("");

Je dis peut-etre une co...rie, mais àa ne marcherais pas mieux avec private $sPath = "./"; d'origine ?  

<hr />
lowke<sub>yhttp://s11.bitefight.fr/c.php?uid=45971</sub>
Commenter la réponse de cs_lowkey
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
0
Merci
j'ai effectivement un constructeur qui voici :
//############################## constructeur ##########################################
        function __construct ( $sPath)
        {
            $this->sPath = $sPath;                                   // chemin du dossier
        }
Commenter la réponse de waterw72