IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème : return true de méthode privée


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 44
    Par défaut Problème : return true de méthode privée
    Salut à tous !
    Petit problème avec un retour de méthode privée. Je vous montre le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    const recovery = 'filename.ini';
    /*...*/		
    private function searchCurrentInstallation($path)
    {
    	$tab_file = scandir($path,0); //open the path and return all file and directory in it
    	for($i=2;$i<count($tab_file);$i++) //start at 2 because there's the object .(full return) and ..(return)
    	{
    		if(is_dir($path."/".$tab_file[$i])) //if the current object is a directory
    		{
    		      $this->searchCurrentInstallation($path."/".$tab_file[$i]); //recall the function
    		}elseif($tab_file[$i] == self::recovery) //if the file is the recovery
    			return TRUE; //return true
    	}
    	return FALSE; // if no recovery found return false
     
    }
    Cette fonction marche, lors du débugging j'arrive à die("found") lors du test avec mon self::recovery.

    Cependant, lorsque le test s'avère positif, aucun retour n'est effectué.

    Ps: le but de cette fonction est de parcourir tout le dossier $path (fichier et sous dossier) et de trouver un éventuel 'filename.ini'.
    Auriez-vous une idée ?
    Merci, bisous

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut

    Il existe plus simple avec php pour faire ce que tu souhaites en utilisant la SPL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
     
    $dirStart  = 'path' . DIRECTORY_SEPARATOR . 'to a directory';
    $directory = new RecursiveDirectoryIterator($dirStart);
    $iterator  = new RecursiveIteratorIterator($directory);
     
    foreach($iterator as $elem) {
       if ($elem->getFilename() == 'filename.ini') {
          # fichier trouvé
       } else {
          # fichier non trouvé
       }
    }
     
    ?>
    Pour le bisou on va attendre encore un peu

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 44
    Par défaut ^^
    Le but de mon projet personnel étant de faire un maximum de chose de mes propres mains, à l'artisanal, je me permet de refuser ta solution.

    Je réitère donc ma question ^^ Ne voyant pas ce qui ne marche pas, j'appelle à l'aide !


  4. #4
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 44
    Par défaut
    Problème résolu par moi même.
    Solution :
    - Cette fonction étant récursive, le fait de retourner vrai ne stoppera pas complètement la fonction. Cela, retournera vrai pour la fonction recrée avec les paramètres modifiés (Ne connait pas le therme exact).

    Enfin, pour pouvoir traiter le return true, il faut avoir une porte de sortie dans la fonction afin de pouvoir, si un retour est effectué d'être traiter de la manière appropriée.

    Merci !

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Le pb est que tu ne traites pas le résultat de l'appel récursif à la méthode searchCurrentInstallation : un TRUE ne sera jamais remonté de la pîle d'exécution.

    EDIT : grilled, voilà ce que ça fait de divaguer à droite à gauche

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 44
    Par défaut
    Merci, mais avec un peu de réflexion, j'avais réussi à répondre à ma question !
    Merci de ta réponse en tout cas !

  7. #7
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    pour information, en général on évite d'appeler count() à chaque tour de boucle dans une itération car si je ne me trompe pas la taille d'un Array n'est pas récupérable directement en PHP. Cela n'aura sans doute pas d'impact sur ta méthode mais peut-être sur d'autres développements futurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // Appel et calcul à chaque itération
    for($i=2;$i<count($tab_file);$i++) 
     
    // Un seul appel et calcul
    for($i=2, $c = count($tab_file);$i< $c;$i++)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème return sur une méthode
    Par root76 dans le forum Langage
    Réponses: 3
    Dernier message: 07/03/2008, 10h43
  2. Méthodes privées: pratique courant en Python
    Par Thierry Chappuis dans le forum Général Python
    Réponses: 3
    Dernier message: 25/11/2005, 19h30
  3. Réponses: 11
    Dernier message: 29/04/2005, 19h45
  4. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  5. [TOMCAT] JSP problème d'accès aux méthodes d'une classes
    Par gunnm dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 22/05/2004, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo