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 :

php classe "$this" ou "self" ?


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Points : 475
    Points
    475
    Par défaut php classe "$this" ou "self" ?
    Salut, cela semble très gênant, je me sers de mots clés si longtemps que je ne me souviens pas quelle est la différence entre
    «$this->»
    et
    «self»
    en php.


    Par exemple,
    au lieu de, on écritC'est quoi la différence ? /* si possible un exemple */

    Merci d'avance.

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    self s'utilise plus dans un contexte static

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    MaClasse::GetMyName ();
    // --- avec GetMyName () signature static
     
     
    // --- ou
     
    $objet = new Classe();
    $objet->GetMyName ();

  3. #3
    Membre du Club

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 19
    Points : 54
    Points
    54
    Billets dans le blog
    1
    Par défaut self, mot reservé pour le contexte de classe.
    Bonjour.

    Voici un exemple qui est extrait de la documentation PHP dans le chapitre intitulé "parent" :

    Code php : 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
     
    <?php
    class A {
      function example() {
        echo "Je suis A::example() et je fournis une fonctionnalité de base.<br />\n";
      }
    }
    class B extends A {
      function example() {
        echo "Je suis B::example() et je fournis une fonctionnalité supplémentaire.<br />\n";
        parent::example();
      }
    }
    $b = new B;
    // Cette syntaxe va appeler B::example(), qui, à sont tour, va appeler A::example().
    $b->example();
    ?>

  4. #4
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    La différence est que $this fait référence à une instance de classe alors que self fait référence à la définition de la classe.

    L'utilisation du mot-clé self:: doit être suivi d'un membre statique déclaré au sein de la classe ou d'une méthode déclarée statique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private static $var;
    public static function getVar();

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