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 :

Significations de self et parent. [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut Significations de self et parent.
    Bonjour,

    Je n'ai trouvé nul part la définition de self:: et parent::
    Une définition assez simple pour un débutant svp.
    Dans le code ci-dessous, j'ai mis ce que je pensais.
    Je ne sais pas si c'est complet.

    Merci

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    <?php
    class Chien
    {
    	protected function aboyer()
    	{
    	return 'Je suis un chien donc j\'aboie';
    	}
    }
     
    class Chien_Labrador extends Chien
    {
    	protected function aboyer()
    		{
    		return 'Je suis un labrador';
    		}
    	public function identifierParent()
    		{
     
    // parent:: permet d'accéder à (un attribut?) ou une méthode de la classe mère.		
    		return parent::aboyer();
    		}
    	public function identifierSelf()
    		{
    // self:: permet d'accéder à un attribut ou à une méthode proteged ou static.
    		return self::aboyer();
    		}
    }
     
    $médor = new Chien_Labrador();
     
    echo $médor->identifierParent().'<br/>';
     
    echo $médor->identifierSelf().'<br/>';

  2. #2
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Bonjour à toi,

    Alors je vais faire super simple en me basant sur ton exemple.

    Quand dans la class Chien_Labrador tu fais :

    return self::aboyer();

    PHP va utiliser la fonction présente dans la class Chien_Labrador.

    Maintenant si tu utilise dans la class Chien_Labrador :
    return parent::aboyer();

    PHP va utiliser la fonciton présente dans la class Chien.

    En gros quand on utilise "self::" on demande d'utiliser ce qui est dans la CLASS courante ou ce que l'on a hérité sans l'avoir redéfinie dans notre class. Quand on utilise "parent::" on demande d'utiliser les éléments de la class dont on a hérité.

    C'est extrêmement pratique est utile dans la programmation Objet.

    Mais tu as raison il faut bien comprendre comment cela fonctionne

    Cordialement,

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Un autre détail ...

    Si je comprends bien mon code :
    le self:: cherche en premier lieu dans la classe courante
    avant d'aller chercher dans la classe parent (enfin je parle de son héritage).

    S'il trouve son bonheur dans la classe courante,
    il utilise la fonction qui s'y trouve; sinon il va chercher dans
    la classe parent.

    Tout ceci vaut également pour les attributs.

    Je me trompe?

    Merci pour ta réponse.

  4. #4
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Tu as tous compris

    En effet quand on fait des appels avec "self::" il va d'abord consulter l'objet courant. Et ensuite si il n'a rien trouvé demandé au parent.

    Alors que "parent::" vas aller demander directement à la class parente.

    Cordialement,

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 220
    Points : 100
    Points
    100
    Par défaut
    Le tutoriel pour grands débutants pressés?
    Non, j'ai déjà utilisé (en partie) mais
    je préfère utiliser maintenant le manuel de Guillaume R allias Yogui.

    C'est plus détaillé mais je trouve que l'on comprends bien mieux.
    Il ne faut justement pas trop se presser et essayer de bien comprendre
    son code. Enfin, ce n'est que mon avis.

    Je suis arrivé à la page 51 ... ouf ouf ... pas toujours facile.

    Merci pour tes réponses.

  6. #6
    Membre confirmé Avatar de Inazo
    Profil pro
    Gérant - société de développement web
    Inscrit en
    Avril 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Gérant - société de développement web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 417
    Points : 632
    Points
    632
    Par défaut
    Tu as tout à fait raison mais le lien est dans ma signature depuis peut ^^ Cela ne t'était pas directement adressé car si tu en es déjà à la POO tu es bien plus loin

    Cordialement,

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

Discussions similaires

  1. Signification du paramètre parent
    Par maroua_mm dans le forum Qt
    Réponses: 2
    Dernier message: 06/04/2009, 12h34
  2. [POO] Signification du mot-clé self
    Par marty499 dans le forum Langage
    Réponses: 6
    Dernier message: 20/12/2008, 05h27
  3. Self, handle et parent
    Par serve dans le forum Langage
    Réponses: 9
    Dernier message: 03/12/2004, 03h42
  4. i386, x86 signification ?
    Par Thcan dans le forum Assembleur
    Réponses: 7
    Dernier message: 04/01/2003, 21h36
  5. DLL, affichage et parent...
    Par KRis dans le forum Composants VCL
    Réponses: 6
    Dernier message: 13/12/2002, 17h01

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