8
votes

Instance comme une propriété de classe statique

est-il possible de déclarer une instance d'une classe comme une propriété en PHP?

Fondamentalement ce que je veux atteindre est: xxx

Eh bien, je sais que je Je ne peux pas faire ça, mais y a-t-il une solution de contournement à côté de toujours faire quelque chose comme ceci: xxx


4 commentaires

Cela a été posé plusieurs fois auparavant. Les propriétés ne peuvent pas être initialisées avec des informations dépendantes d'exécution. Définissez l'instance dans la CTOR. Ou le chargement paresseux dans un getter.


Oui, je sais que je peux le mettre dans un constructeur, mais dans mon cas, j'ai besoin d'une classe pour être statique. Merci pour un effort cependant :)


en.wikipedia.org/wiki/singleton_pattern ?


@Paulius Vous pouvez également définir des propriétés statiques dans la CTOR, donc je ne vois donc aucune raison pour le "mais".


3 Réponses :


20
votes

Vous pouvez utiliser un singleton comme implémentation comme: xxx

puis vous pouvez faire référence à l'instance avec: xxx


1 commentaires

Je préférerais ne pas l'appeler getInstance mais plutôt getb () alors.



4
votes

Une solution alternative, un constructeur statique, est quelque chose du long des lignes de xxx

Veuillez noter que la classe ne doit pas être abstraite pour que cela fonctionne. < p> Voir aussi Comment initialiser les variables statiques et https://stackoverflow.com/a/3313137/118153 .


0 commentaires

0
votes

Ceci est de quelques années, mais je viens de courir dans un problème où j'ai une classe de base xxx

qui a une classe enfant xxx

et une autre classe enfant xxx

mais quand j'essaie d'appeler xxx

alors $ sera maître comme prévu, mais $ client sera maître car php utilise la GeneralObject: $ _ instance < / Code> pour les deux maître et client

Le seul moyen que je puisse réaliser ce que je veux, c'était changer le GeneralObject :: $ _ instance pour être un tableau et ajustez la méthode getinstance () . xxx

J'espère que cela aide quelqu'un sinon là-bas. M'a pris quelques heures pour déboguer ce qui se passait.


0 commentaires