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 :

Que signifie self:: ?


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut Que signifie self:: ?
    Bonjour à tous,

    Je lis actuellement le tuto de Julien Pauli sur le modèle MVC en PHP, mais il y a un bout de code que je ne comprend pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if (is_null(self::$_instance)){
                self::$_instance = new self();
            }
            return self::$_instance;
    Celui-ci est placé dans une fonction "getInstance()" qui est sans doute le constructeur de la classe. Pouvez-vous m'éclairer sur la signification de ce code ?

  2. #2
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    En fait, ce code est l'implémentation en php du design pattern "singleton" (fait une petite recherche dans google sur singleton, c'est interessant à connaitre quand on fait de l'objet).

    Et self:: désigne "la classe dans laquelle est écrite self".
    En d'autres termes self::$_instance désigne le champ $_instance qui a été déclaré en static dans la classe en question.

  3. #3
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    self représente la classe et non pas l'objet instancié ( comme this )

    Tu dois l'utiliser pour les constantes de classes et pour tout ce qui est statique.
    Car dans ce cas là, aucun objet n'est instancié donc this n'existe pas.

    Les pros de l'objet complèteront mon propos .

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    Citation Envoyé par FCYPBA Voir le message
    self représente la classe et non pas l'objet instancié ( comme this )

    Tu dois l'utiliser pour les constantes de classes et pour tout ce qui est statique.
    Car dans ce cas là, aucun objet n'est instancié donc this n'existe pas.

    Les pros de l'objet complèteront mon propos .
    Pour les constantes de classes ??... Tiens, je n'ai jamais vu ça... Tu es sûr de ce que tu avances ??? Il ne me semble pas... J'aurais plutôt écrit ça comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    class Toto {
    const UNE_CONSTANTE = 'aime le chocolat';
    ....
    }
    Sinon, ce que tu dis à propos de self, je suis tout à fait d'accord... mais comme tu le dis, à faire confirmer par un developpeur pro php...

    Cordialement,
    Patouche

  5. #5
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Pour la déclaration, tu utilises cette syntaxe mais pour y accéder tu es obligé de passer par self car une constante de classe est statique ( en très gros )

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Janvier 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Janvier 2008
    Messages : 227
    Par défaut
    Citation Envoyé par FCYPBA Voir le message
    Pour la déclaration, tu utilises cette syntaxe mais pour y accéder tu es obligé de passer par self car une constante de classe est statique ( en très gros )
    Bon, en effet, tu as totalement raison... Je suis à coté de mes pompes ... Pour lire une constante, tu le fais en effet de la même manière qu'une variable statique

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 15
    Par défaut
    Merci pour ces réponses. Et rapide en plus...

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

Discussions similaires

  1. Que signifie "Error : Data truncation" ??
    Par BouB dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 20/05/2005, 16h20
  2. [SQL6]Que signifie ce LEFT ?
    Par guy2004 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 30/01/2005, 19h18
  3. Que signifie Pagesize ?
    Par anthony70 dans le forum Débuter
    Réponses: 3
    Dernier message: 31/08/2004, 13h31
  4. Que signifier $0 et $@
    Par jaabouc dans le forum Linux
    Réponses: 6
    Dernier message: 01/06/2004, 15h17

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