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 :

Assigner un objet à un autre objet


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2016
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Assigner un objet à un autre objet
    Bonsoir,

    J'ai une classe Ecriture_Class qui est une extension d'une classe Element_Class.
    Et en fait, j'ai déclaré plein de classes comme extension de la classe de base Element_Class.

    Je déclare un objet Element (car je ne sais pas à l'avance quelle sous-classe ce sera) issu de la classe Element_Class.

    L'objet Element $Elt a un sous-objet Table (ce qui me permet de savoir quel sous-classe c'est).

    Je fais un switch sur Element->Table->Id pour définir l'objet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	switch($Elt->Table->Id)
    	{
    		case 1: //Ecritures
    			$Ecriture = new Ecriture_Class;
    			$Ecriture->Id = $Elt->Id;
    			$Ecriture->Charge();
    			$Elt = $Ecriture;
    			break;
    Sachant que la classe Ecriture_Class est une extension de la classe Element_Class, comme puis-je faire que $Elt = $Ecriture; fonctionne ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Désolée, mais je ne comprends rien à ton problème...
    Je vais quand même essayer : tu as une méthode qui reçoit en entrée un objet Element et à partir de cette entrée, tu veux construire un autre objet d'un type déterminé en fonction d'une donnée de ton objet Element. Et ensuite, tu veux écraser la donnée en entrée ? pourquoi faire ?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2016
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2016
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    En fait j'essaie de factoriser un maximum mes programmes.

    Donc j'ai créé une classe Element_Class dont découlent toutes mes autres classes Ecriture_Class, Homme_Class, Machine_Class chacune faisant référence à une table MySQL différente.

    J'ai aussi un table Article_Element faisaint le lien entre mon article et mon élément (qui est soit une écriture, soit un homme, soit ....)

    Donc quand je pars d'un article, je ne sais pas a priori vers où va pointer l'élément. Donc je pars d'un objet Element et après quand je sais quel objet est concerné (Ecriture, Homme...) je veux que mon objet Element devienne un objet Ecriture, Homme ou au moins qu'il en prenne la structure.

    Citation Envoyé par Celira Voir le message
    Désolée, mais je ne comprends rien à ton problème...
    Je vais quand même essayer : tu as une méthode qui reçoit en entrée un objet Element et à partir de cette entrée, tu veux construire un autre objet d'un type déterminé en fonction d'une donnée de ton objet Element. Et ensuite, tu veux écraser la donnée en entrée ? pourquoi faire ?

  4. #4
    Membre averti Avatar de Kennel sébastien
    Homme Profil pro
    Développeur
    Inscrit en
    Septembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Septembre 2008
    Messages : 226
    Points : 329
    Points
    329
    Par défaut
    Tu veux faire un clone des propriétés, si je comprends bien ?

    Il faut donc assigner chaque propriété que tu souhaites et non la référence à un objet.

    Autrement dit pour id :

    $Elt->Id = $Ecriture->Id;

    etc…

    Il faut regarder du coter de clone :
    http://php.net/manual/fr/language.oop5.cloning.php

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Si je comprends bien, tu as une classe générique Element_Class portant un certain nombre de méthodes et des classes concrètes Ecriture_Class, Homme_Class ... qui héritent de Element_Class afin de bénéficier des méthodes de la classe mère sans en dupliquer le code.

    Tu fais une affectation du type $Elt = new Element_Class();

    Tu as ensuite une méthode au sein de Element_Class qui détermine quelle classe concrète utiliser et tu voudrais qu'automatiquement la variable $Elt deviennent de ce type de classe.

    Si j'ai bien compris le problème, je te propose la solution suivante :

    Dans la classe Element_Class implémenter une méthode static getInstance() qui te retournera l'instance concrète à utiliser. Puis faire l'instanciation de la variable $Elt de la manière suivante :

    $Elt = Element_Class::getInstance();

    C'est ensuite dans cette méthode que tu mets ton switch pour déterminer quelle classe concrète doit être utilisée.

Discussions similaires

  1. [css] acceder aux propriétés d'un autre objet
    Par bakonu dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/10/2005, 12h28
  2. [Collaboration/Interaction] Peut-on schématiser une interaction entre un bouton de commande et un autre objet ?
    Par manel007 dans le forum Autres Diagrammes
    Réponses: 5
    Dernier message: 21/09/2004, 01h01
  3. Réponses: 6
    Dernier message: 08/09/2004, 12h35
  4. [jcombobox]l'élément affiché lié à un autre objet
    Par szdavid dans le forum Composants
    Réponses: 3
    Dernier message: 11/05/2004, 10h17
  5. Un objet rendu apparaît derrière un autre objet
    Par jamal24 dans le forum OpenGL
    Réponses: 2
    Dernier message: 01/05/2003, 20h47

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