est-il possible de déclarer une instance d'une classe comme une propriété en PHP?
Fondamentalement ce que je veux atteindre est: p> 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: p>
3 Réponses :
Vous pouvez utiliser un singleton comme implémentation comme: puis vous pouvez faire référence à l'instance avec: p>
Je préférerais ne pas l'appeler getInstance mais plutôt getb () alors.
Une solution alternative, un constructeur statique, est quelque chose du long des lignes de Veuillez noter que la classe ne doit pas être abstraite pour que cela fonctionne. P> < p> Voir aussi Comment initialiser les variables statiques et https://stackoverflow.com/a/3313137/118153 . P> P>
Ceci est de quelques années, mais je viens de courir dans un problème où j'ai une classe de base qui a une classe enfant p> et une autre classe enfant p> mais quand j'essaie d'appeler p> alors Le seul moyen que je puisse réaliser ce que je veux, c'était changer le J'espère que cela aide quelqu'un sinon là-bas. M'a pris quelques heures pour déboguer ce qui se passait. P> p> $ code> sera
maître code> comme prévu, mais
$ client code> sera
maître code> car php utilise la
GeneralObject: $ _ instance < / Code> pour les deux
maître code> et
client code> p>
GeneralObject :: $ _ instance code> pour être un tableau code> et ajustez la méthode
getinstance () code>. p>
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".