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 :

Passage d'objet dans constructeur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Par défaut Passage d'objet dans constructeur
    Bonjour, j'avais une petite question technique concernant le passage d'objet.

    J'ai un Objet A que je dois passer vers une CLASS B qui contient des Méthodes utilisant l'Objet A

    dans ma CLASS B, j'ai donc 2 solutions soit passer mon Objet A dans le constructeur soit récupérer A au niveau de chaque méthodes...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //CLASS B
     
    __construct ( $A)
    $this->a = $A;
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    méthode1()
    $A = $this->a
     
    méthode2()
    $A = $this->a
     
    méthode3()
    $A = $this->a

    OU ALORS je peux directement récupérer l'objet A dans les méthodes sans passer par le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    méthode1($A)
    $A
     
    méthode2($A)
    $A
     
    méthode3($A)
    $A
    Passer par le constructeur cela semble plus Pro lol, mais au final je en suis pas sur... au final ne multiplie-t-on pas les affectations de variable en double triple....

    De façon générale, on utilise quelle méthode dans quel contexte... avantages inconvénients

  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,

    ben généralement, si ta classe B doit utiliser 80% des méthodes de la classe A, c'est que t'as une erreur de design objet.
    Tu devrais décrire plus précisément la réalité de ta problématique et pas un cas d'école.

  3. #3
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Par défaut
    Ma CLASS A est mon ROUTER mon Objet Router.

    Ma CLASS B est mon Contrôleur

    Ma class B n'utilise pas 80% des méthode de A
    Ma CLASS CONTROLEUR utilise 100% l'objet ROUTER

    Donc soit je passe mon Objet ROUTER à ma Class CONTROLEUR par le constructeur de CONTROLEUR
    puis dans chaque méthode je récupérè mon ROUTEUR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //CLASS B
     
    __construct ( $A)
    $this->a = $A;
     
    méthode1()
    $A = $this->a
     
    méthode2()
    $A = $this->a
     
    méthode3()
    $A = $this->a
    Soit je passe mon Objet ROUTER directement dans les méthode du Controleur depuis mon Router

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    //CLASS B
     
    méthode1($A)
    $A
     
    méthode2($A)
    $A
     
    méthode3($A)
    $A
    Soit new Controleur($A)->methode1() soit new Controleur->methode1($A)

    L'idée était de comprendre la subtilité ou les conséquences entre les 2 façons de faire

  4. #4
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Citation Envoyé par scamphp Voir le message
    Soit new Controleur($A)->methode1() soit new Controleur->methode1($A)
    Est-ce que tous les appels au routeur doivent se faire avec la même instance ou est-ce que chaque utilisation peut/doit utiliser une instance différente ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Mai 2018
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Mai 2018
    Messages : 275
    Par défaut
    Avec le même instance (mais j'ai déjà un Singleton sur A)

  6. #6
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si c'est la même instance, initialisée une fois au début du script, autant la mettre dans le constructeur.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Passage d'objet dans un h:commandButton
    Par lolila dans le forum JSF
    Réponses: 5
    Dernier message: 17/07/2012, 12h05
  2. Passage d'objet dans une DLL
    Par delire8 dans le forum C++
    Réponses: 21
    Dernier message: 25/08/2008, 12h17
  3. Réponses: 6
    Dernier message: 10/06/2007, 14h33
  4. [POO] Passage d'objet dans un formaulaire
    Par jiluc dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2005, 17h07
  5. Réponses: 20
    Dernier message: 23/09/2005, 14h50

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