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 :

Référence à un object dans un autre object


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut Référence à un object dans un autre object
    Bonjour,

    J'ai 2 objets, O1 et O2.

    Mettons:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class O1 {
    ...
    }
     
    class O2 {
    private $objO1;
     
    public __construct($objO1) {
    $this->$objO1 = $objO1;
    }
    }
    En essayant de stocker un référence vers une instance de O1 dans mon objet O2, le page me retroune:
    Object of class O1 could not be converted to string.

    Qu'est-ce que je fais mal ?

    Merci d'avance et bonne journée

  2. #2
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Bonjour,

    O1 est un objet, il faut que tu appelles son constructeur ... est ce bon ?
    Soit le new dans le constructeur de O2, soit avant l'appel avec Object1 en paramètre.

  3. #3
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    Hello,

    Bien que je ne l'ai pas précisé, j'ai bien sur construit l'objet O1 avant d'appeler le constructeur de O2.

  4. #4
    Membre Expert Avatar de Fench
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Mai 2002
    Messages
    2 353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Groenland

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 353
    Par défaut
    Oui, je sais que les questions peuvent être bêtes mais des fois ça bug pour une bêtise ...

    Continuons dans la simple vérif, tu as bien lors de la construction de l'objet1 et dans son script un include de la classe O1 car vu le message, il ne doit pas connaître la structure de l'objet O1 puisqu'il ne peut pas le sérialiser en string pour le passage de paramétre de la construction de 02.

  5. #5
    Rédacteur
    Avatar de Halleck
    Homme Profil pro
    Consultant PHP
    Inscrit en
    Mars 2003
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Consultant PHP

    Informations forums :
    Inscription : Mars 2003
    Messages : 597
    Par défaut
    Ton code est incomplet : tu ne ferais pas un echo $this->$objO1; par hasard ?

    Ton erreur ne vient que d'un problème de conversion de ton objet en string. Vu que l'erreur survient, c'est que quelque part du demande (implcitement ou non) à PHP de le caster en string (ce qui se passe quand tu fais echo, str_*...).

    Fais des var_dump() à la place des echo, ou si tu en as besoin implémente une méthode __toString()

  6. #6
    Membre éclairé Avatar de PoZZyX
    Inscrit en
    Août 2005
    Messages
    426
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 426
    Par défaut
    Alors pour etre plus complet
    index.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    require('o1.php');
    require('o2.php');
     
    $o1 = new O1();
    $o2 = new O2($o1);
    ?>
    o1.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class O1 {
    private $data;
    public function set_data($data) {
    $this->$data = $data;
    }
    public function get_data() {
    return $data;
    }
    }
    o2.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class O2 {
    private $o1;
     
    function __construct($o1) {
    $this->$o1 = $o1;
    }
    }
    L'exception qu'il me donne il me la donne sur le fichier o2.php, ligne $this->$o1 = $o1;

    Merci pour votre aide !!!

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

Discussions similaires

  1. Trouver un object dans une listof( object)
    Par richton95 dans le forum VB.NET
    Réponses: 2
    Dernier message: 12/05/2009, 11h47
  2. Appel un object dans Tableau d'objects
    Par aristeas dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 22/11/2008, 22h07
  3. Comment copier un object dans un autre ?
    Par cadetill dans le forum Langage
    Réponses: 7
    Dernier message: 07/02/2008, 19h09
  4. Référence à une colonne dans un autre select
    Par vlefevre dans le forum Langage SQL
    Réponses: 3
    Dernier message: 08/01/2008, 09h48
  5. Réponses: 1
    Dernier message: 15/05/2007, 10h40

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