Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 16h54   #1
Membre confirmé
 
Avatar de Général03
 
Inscription : avril 2006
Messages : 809
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 809
Points : 220
Points : 220
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 :
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
__________________
Mes contributions phares en dev : www.rigaudie.fr
Général03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 16h57   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
un petit tour sur la doc

http://php.net/manual/fr/function.get-parent-class.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h01   #3
Membre confirmé
 
Avatar de Général03
 
Inscription : avril 2006
Messages : 809
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 809
Points : 220
Points : 220
Non justement c'est l'inverse que je souhaite

Code :
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() !!!
__________________
Mes contributions phares en dev : www.rigaudie.fr
Général03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h09   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
c'est pas très claire ton histoire,

Code :
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)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h13   #5
Membre confirmé
 
Avatar de Général03
 
Inscription : avril 2006
Messages : 809
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : avril 2006
Messages : 809
Points : 220
Points : 220
Super kodeya merci c'était tout simplement get_called_class() je l'avais zappé.

Merci à vous 2
__________________
Mes contributions phares en dev : www.rigaudie.fr
Général03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h17   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h17   #7
Membre régulier
 
Inscription : 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 : 82
Points : 82
zut. J'ai supprimé le message en pensant que c'etait pas ce que tu voulais. Je le remets pour les autres.

Code :
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
kodeya est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 17h18   #8
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 461
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 461
Points : 2 548
Points : 2 548
Envoyer un message via Skype™ à rawsrc
Salut

Après get_called_class() et get_class() : il te reste le LSB (Late Static Binding)
Code :
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();
   }
}
 
?>
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h03.


 
 
 
 
Partenaires

Hébergement Web