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 ?
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 ?
S'il ne fait rien, il n'y a pas lieu de le définir.
Mais si on ne fait rien, faire un new ma_classe(); va être possible, non ?
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.
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...
Essaie ;-)
Un constructeur est une fonction qui *doit* être publique. Un constructeur ne peut jamais être privé et ... c'est logique
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é.
Partager