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 :

[POO] Signification du mot-clé self


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2008
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 149
    Points : 57
    Points
    57
    Par défaut [POO] Signification du mot-clé self
    Bonjour , je recommence tout juste à manipuler le php orienté objet, j'ai des soucis sur la syntaxe :

    que signifie " self::$variable "

    également :
    has_var
    get_var
    set_var

    merci

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 56
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Celà s'utilise pour accéder à une variable de la classe parente (attention, les variables doivent être statiques).

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class test
    {
         public static $variable="Variable";
     
         public static function afficherVariable()
         {
               print(self::$variable);
         }
    }
    Ce code appelé depuis une page par test::afficherVariable(); va afficher "Variable".

    A noter que pour utiliser les :: il faut que la fonction et la variable soient statiques.

    Sinon utiliser $this->variable dans la fonction et pour l'appel dans la page $instanceTest= new test(); $instanceTest->afficherVariable();

    Bon, voilà en gros si je me suis pas planté quelque part. Pour les trois autres variables aucune idée, peut-être lié aux fonctions __set() et __get() des classes.

    Bonne journée,

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par Smiff Voir le message
    Celà s'utilise pour accéder à une variable de la classe parente (attention, les variables doivent être statiques).
    Ce n'est pas tout à fait exact.

    Le mot-clef self permet d'utiliser une méthode ou une propriété de la classe elle-même. Pour utiliser la classe parente, il faut utiliser le mot clef parent.
    Utiliser ces mots clefs évite simplement de répéter le nom de la classe dans ton code, ce qui simplifie l'évolution du code.
    Tu peux aussi utiliser ces mots clefs pour appeler des méthodes ou propriétés non statiques.

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Du coup, quelle différence y a-t-il entre un self::fonction() et un $this->fonction() ?

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    self::fonction() appelle une méthode déclarée avec le mot-clef static. Cette méthode n'a pas accès aux propriétés non statiques de la classe, elle ne peut utiliser que les propriétés déclarées elles aussi avec le mot clef static, ce qui signifie que leur valeur est commune à tous les objets de cette classe.

  6. #6
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    +1, self permet d'accéder à une donnée d'une classe, et non d'un objet (c'est à dire une instance de classe).
    En gros, tu accèdes à une variable, une constante, une méthode, dans un contexte "static"

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 191
    Points : 275
    Points
    275
    Par défaut
    je conseil l'utilisation de self avec parcimonie
    en règle générale, le php n'est pas trop static car le script ne dur qu'un faible temps.
    a contrario parent peut être nettement plus intéressant, voir très intéressant reste qu'il faut avoir un code bien orienté objet.

Discussions similaires

  1. [POO] Signification d'une syntaxe
    Par spaukensen dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/02/2008, 17h32
  2. [POO] Signification de -> en php
    Par spaukensen dans le forum Langage
    Réponses: 6
    Dernier message: 15/02/2008, 11h42
  3. Que siginifie le mot clé SELF?
    Par mehdiing dans le forum SQL
    Réponses: 5
    Dernier message: 27/11/2007, 16h21
  4. [POO] Signification de =&
    Par Becafuel dans le forum Langage
    Réponses: 4
    Dernier message: 19/10/2006, 15h10
  5. Réponses: 23
    Dernier message: 23/01/2006, 21h31

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