Instances vs statiques : démystifier une erreur d'initialisation courante
Dans le développement de logiciels, les classes contiennent souvent à la fois des instances et des membres statiques. Les membres d'instance sont associés à des instances individuelles d'une classe, tandis que les membres statiques sont partagés entre toutes les instances.
Lorsque vous travaillez avec des membres d'instance, il est important de comprendre les limites des initialiseurs de champ. Les initialiseurs de champ sont utilisés pour attribuer des valeurs aux champs d'instance lorsqu'une instance est créée. Cependant, comme indiqué dans le message d'erreur « Un initialiseur de champ ne peut pas référencer le champ, la méthode ou la propriété non statique », les initialiseurs de champ ne peuvent pas référencer les membres non statiques.
Analyse du code d'origine
Le code que vous avez fourni démontre cette limitation. La classe Service contient un dépôt de champ d'instance et un initialiseur de champ qui tente d'appeler une méthode non statique GetDinner sur le dépôt d'instance. Cela génère une erreur car l'initialiseur de champ tente d'accéder à un membre non statique avant que l'instance ne soit complètement initialisée.
Solutions
Il existe deux solutions courantes pour ce numéro :
Bonne pratique
Les deux solutions sont valides, mais l'initialisation du constructeur est généralement considérée comme la préférée. approche. En effet, il offre plus de flexibilité et vous permet d'initialiser d'autres champs d'instance selon vos besoins.
En évitant l'utilisation d'initialiseurs de champ pour les membres non statiques, vous pouvez éviter les erreurs d'initialisation et garantir que votre code se comporte comme prévu. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!