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 :

Connaitre nom classe enfant depuis parent [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut Connaitre nom classe enfant depuis parent
    Bonjour,

    je cherche simplement à connaitre le nom de la classe qui appelé ma méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    class A extends B{
        function doAction(){
         $this->getParent()
       }
     
    class B{
        function getParent()
       {
        // Retourner la classe qui à appelé celle-ci
        // Dans mon cas je souhaite obtenir A
        }
    }
    }
    En faite je cherche l'équivalent enfant de __CLASS__

    Merci

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726

  3. #3
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Non justement c'est l'inverse que je souhaite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class B{
        function getParent()
       {
        echo get_parent_class($this)
        // Retourner B et non A
        }
    }
    Il me faudrait un get_child() !!!

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    c'est pas très claire ton histoire,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    class B{
        function getParent()
       {
        echo get_parent_class($this)
        // Retourner B et non A
        }
    }
    donc __CLASS__ si tu veux B la


    get_called_class c'est plus pour le statique, c'est get_class($this)

  5. #5
    Membre actif Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Points : 283
    Points
    283
    Par défaut
    Super kodeya merci c'était tout simplement get_called_class() je l'avais zappé.

    Merci à vous 2

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par Général03 Voir le message
    Super kodeya merci c'était tout simplement get_called_class() je l'avais zappé.

    Merci à vous 2
    get_class($this) suffit

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Points : 84
    Points
    84
    Par défaut
    zut. J'ai supprimé le message en pensant que c'etait pas ce que tu voulais. Je le remets pour les autres.

    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
    19
    20
     
    class A extends B{
     
       function doAction(){
         $this->getParent();
       }
    }
    class B{
        function getParent()
       {
        	return get_called_class() ;
       	// Retourner la classe qui à appelé celle-ci
        // Dans mon cas je souhaite obtenir A
        }
    }
     
    $a = new A ;
    $b = new B ;
    echo $a->getParent() ; // A 
    echo $b->getParent() ; // B

  8. #8
    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 : 48
    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

    Après get_called_class() et get_class() : il te reste le LSB (Late Static Binding)
    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
    19
    20
    21
    <?php
     
    class B {
     
       const SELF = __CLASS__;
     
       function getParent() {
          return static::SELF;
       }
    }
     
    class A extends B {
     
       const SELF = __CLASS__;
     
       function doAction() {
          return $this->getParent();
       }
    }
     
    ?>

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 12/03/2013, 13h23
  2. Réponses: 2
    Dernier message: 18/09/2012, 14h58
  3. Nom classe parente
    Par Pendary dans le forum C++Builder
    Réponses: 1
    Dernier message: 02/08/2007, 13h58
  4. Réponses: 3
    Dernier message: 27/04/2007, 14h51
  5. Réponses: 7
    Dernier message: 08/01/2007, 12h11

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