Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/01/2013, à 23:32

compte supprimé

Que veut dire new self() en PHP? [Résolu]

Bonsoir, je lisais un cours de Techno web.

https://ensweb.users.info.unicaen.fr/co … ls_Bd.phps

Et une partie du code m'a interpellé:

static public function getInstance() {
    if (self::$instance === false) {
      self::$instance = new self();
    }
    return self::$instance;
  }

Bon okay une fonction static avec l'attribut static instance..
On ne peut pas utiliser $this->instance puisqu'il est statique donc on écrit self::$instance

La question que je me posais c'était pourquoi mettre un new self()?

Voici l'explication que je vous donnerais:

On joue sur le fait qu'en PHP le typage est implicite.. (et pour ceux venant du C/C++, pouwaaah l'horreur!) Mais c'est assez astucieux.

Initialement, on initialise le static à false!
Si $instance === false (comparaison même type, ça ce sont les ===)

On intialise enfin l'instance avec new self() qui revient à faire un new Outil_Bd(); Mais comme le constructeur est private, on ne peut pas!

On s'y prend de cette manière dans l'unique but d'obtenir qu'une et unique instance..

Ca y est enfin.. Nous avons initialisé pour de bon notre instance et la condition Si $instance === false
devient fausse! On renvoie en retour notre unique instance!

Sympas. smile
C'est toujours plus agréable de résoudre ses problèmes soi-même.

Dernière modification par ChrisLeturc (Le 31/01/2013, à 23:49)

#2 Le 31/01/2013, à 23:49

Baptiste61

Re : Que veut dire new self() en PHP? [Résolu]

perso self pour moi veut dire dans la boucle(dans la fonction). C'est sûrement superflu ici. Fait des tests sans le self et donne ton retour


OS : Ubuntu 12.04.1 LTS
Processeur 64 bits : Intel® Core™ i5 CPU 650 @ 3.20GHz × 4
Memoire RAM : 3Go
Carte Graphique : AMD Radeon HD 6450

Hors ligne

#3 Le 31/01/2013, à 23:59

Hibou57

Re : Que veut dire new self() en PHP? [Résolu]

Pour compléter, même si c’est marqué Résolu, le même sujet que j’avais vu passer, en Anglais, sur StackOverflow :

What does new self(); mean in PHP? (stackoverflow.com). Mars 2010.


Hajimemashteeeee… \(^o^)/ Tachikoma desu (^_^;)
Le saviez‑vous : le j’m’en foutisme est la cause de la plupart des fléaux du monde contemporain.
Mangez des standards : un grand bol de Standard tous les matins, et vous débutez la journée en pleine forme !
bulleforum.net — Forum de discussions, La Bulle (papotage de la vie courante ou choses trop sérieuses)

Hors ligne

#4 Le 02/02/2013, à 14:18

GaRgAm

Re : Que veut dire new self() en PHP? [Résolu]

ChrisLeturc a écrit :

Bonsoir, je lisais un cours de Techno web.

[...]

On intialise enfin l'instance avec new self() qui revient à faire un new Outil_Bd(); Mais comme le constructeur est private, on ne peut pas!

[...]

Bonjour,

Je passais dans le coin ... smile
Juste pour revenir sur ce passage, certe le constructeur est prive, cela dit tu peux tres bien appeller des methodes prives de ta classe dans celle-ci.

Self est un alias pour la classe en cours, cela te servira surtout si tu herites de ton singleton pour X raison. Si tu n'avais pas utiliser self tu te retrouverais a instancier le parent smile.

Bonne journee.

PS: j'ecris depuis un qwerty et je n'ai donc pas d'accent, je m'excuse pour la gene occasione.

Hors ligne