D'après ce que j'ai compris (c'est la première fois que je code en POO), y a que les méthodes et les attributs qui peuvent être statiques mais la classe n'a pas ce statut. Exact ?
D'après ce que j'ai compris (c'est la première fois que je code en POO), y a que les méthodes et les attributs qui peuvent être statiques mais la classe n'a pas ce statut. Exact ?
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
Oui en PHP la notion de classe statique n'existe pas en tant que tel. On parle de classe statique quand toute les méthode qui la compose sont statiques. On peut aussi rendre le constructeur privé pour être certains que la classe ne soit jamais instanciée et toujours utilisée statiquement.
OK,
je présume que si, à priori, on n'avait pas prévu de constructeur, il serait préférable d'en créer un qui ne fait rien mais qui est private, non ?
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
S'il ne fait rien, il n'y a pas lieu de le définir.
Christophe (cavo789)
Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
Mais si on ne fait rien, faire un new ma_classe(); va être possible, non ?
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
Je ne parlais pas d'instanciation (new maClasse()) mais de l'inutilité, dans une classe, d'écrire un public function __constructor() qui ne contient rien.
Christophe (cavo789)
Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
On ne se comprend pas bien ; ce que je pensais, c'est que pour empêcher new ma_classe(); (pour que ça provoque une erreur fatale), on pourrait faire : private function __construct(){}. Ici, le constructeur étant private, le new va être impossible...
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
Si la discussion est résolue, merci de cliquer sur le bouton
Essaie ;-)
Un constructeur est une fonction qui *doit* être publique. Un constructeur ne peut jamais être privé et ... c'est logique
Christophe (cavo789)
Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
Tiens, j'ai eu un doute et j'ai lancé une petite recherche Google : https://stackoverflow.com/questions/...rivate-why-php
Il serait possible d'avoir des constructeurs privés pour, justement, les singleton. Peut-être est-ce l'unique but ?
J'ai affirmé qu'un constructeur devait être public à tord... Toutefois, j'ai en mémoire une situation où, par erreur, j'avais déclaré la fonction comme telle et un outil d'analyse static (était-ce rector ou pslam ou ...) m'avait alerté de cette faute. Peut-être était-ce parce que cet outil avait justement vu que je n'étais pas dans un contexte de singleton. J'ai tiré une conclusion trop hâtive du coup.
Un constructeur peut être privé.
Christophe (cavo789)
Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager