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 :

retour de methode erreur


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Points : 84
    Points
    84
    Par défaut retour de methode erreur
    Bonjour,
    je m'arrache les cheveux sur un comportement étrange :

    j'ai une classe avec une méthode qui me retourne un objet PHP :
    j'ai volontairement simplifié la classe pour aller directement au souci

    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
    17
    18
    class Decomposition{
     
     
        public function __construct() {
     
        }
        public function getDecomposition($tetesList,$drList,$edList,$reList){
                var_dump(is_object($re)); // renvoi bool(true)
                if(is_object($re)){
                    var_dump("before return atata"); // est bien renvoyé dans la sortie
     
                    if(true) return ["toto","tata","bruno"];//$this->elementsDecomposition; // le tableau n'est pas retourné quand la condition du dessus est if(is_object($re)) , il est retourné si je fais force if(true)
     
                }
       }
     
     
    }
    Si je laisse la condition : if(is_object($re)) le var_dump en dessous est bien envoyé vers la sortie mais le tableau ["toto","tata","bruno"] n'est pas retourné ???????
    Si je force la condition : if(true) le var_dump en dessous est bien envoyé vers la sortie et le tableau aussi
    Bien entendu dans le var_dump(is_object($re)) j'obtiens bool(true).
    Je deviens dingue ;-)

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    c'est bizarre, essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(is_object($re)){
        var_dump("before return atata"); // est bien renvoyé dans la sortie
        var_dump(["toto","tata","bruno"]);

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Points : 84
    Points
    84
    Par défaut retour methode KO
    Slt , c'est la même les var-dump sont bien sur la sortie mais la méthode retourne {} , c'est dingue ce truc !!!! jamais vu ça

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ben je pencherai plutôt que le return se fait mais que tu ne le gères pas correctement dans la fonction appelante.
    Ton code est bien trop incomplet pour t'en dire plus.

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    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
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    essaie ce code chez toi :
    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
    class Foo { }
     
     
    class Bar {
        public function getReturn($re)
        {
            if (is_object($re)) {
                var_dump("before return atata");
                return 'abc';
            }
        }
    }
     
    $bar = new Bar();
    $abc = $bar->getReturn(new Foo());   // $abc = 'abc'
    var_dump('abc = '.$abc);
    et vois par toi-même que le problème se situe ailleurs
    Résultat :
    string(19) "before return atata" string(9) "abc = abc"

  6. #6
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Points : 84
    Points
    84
    Par défaut methode resposne ko
    re, oui ton code marche parfaitement.
    Je comprends ta réflexion sur la gestion de la fonction appelante, mais comment expliques tu que si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(is_object($re)){
                    var_dump("before return atata"); // est bien renvoyé dans la sortie
     
                    if(true) return ["toto","tata","bruno"];//$this->elementsDecomposition; // le tableau n'est pas retourné quand la condition du dessus est if(is_object($re)) , il est retourné si je fais force if(true)
     
                }
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if(true){
                    var_dump("before return atata"); // est bien renvoyé dans la sortie
     
                    if(true) return ["toto","tata","bruno"];//$this->elementsDecomposition; // le tableau n'est pas retourné quand la condition du dessus est if(is_object($re)) , il est retourné si je fais force if(true)
     
                }
    Que le résultat attendu soit bien renvoyé ?
    Je vais tester une classe plus simple comme tu me l'as préconisé, mais sur le point précédent il y a déjà un loup. ;-)
    je précise que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var_dump(is_object($re)) // renvoie bool(true)

  7. #7
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Points : 84
    Points
    84
    Par défaut methode return KO
    voici la méthode appelante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                $decomposition = new Decomposition($this->htEdifice,$this->edtr,$this->tolerance, $this->contraintes);
                $result = $decomposition->getDecomposition($this->listTE, $this->listDR, $this->listED, $this->listRE);
                print_r($result);
    on ne peut faire plus simple, en effet si j'affiche mon var_dump cela veut bien dire que je passe ma condition, d'où ton idée que le soucis est dans la fonction appelante, mais si je remplace le is_object($re) , le resultat est OK, la fonction appelante n'a pas été modifiée entre temps.

    Je sèche complètement. je tourne tout dans tous les sens mais je ne vois plus rien.
    Merci

  8. #8
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Points : 84
    Points
    84
    Par défaut methode ko
    Le souci est ailleurs en effet , je reviens pour clore le sujet
    merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/01/2013, 14h34
  2. Retour message d'erreur
    Par cerede2000 dans le forum SAP
    Réponses: 1
    Dernier message: 23/10/2008, 17h25
  3. Réponses: 8
    Dernier message: 13/09/2007, 17h07
  4. Heritage et type de retour des methodes
    Par belfo dans le forum C++
    Réponses: 20
    Dernier message: 23/12/2006, 23h51
  5. code retour UNIX sur erreur ORA
    Par vinz_07 dans le forum Administration
    Réponses: 7
    Dernier message: 25/08/2004, 11h04

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