Maison >développement back-end >tutoriel php >Comment puis-je accéder aux variables globales dans une classe PHP sans erreurs ?

Comment puis-je accéder aux variables globales dans une classe PHP sans erreurs ?

DDD
DDDoriginal
2024-12-10 04:48:13475parcourir

How Can I Access Global Variables Within a PHP Class Without Errors?

Accès aux variables globales au sein d'une classe

Introduction

Le dilemme de l'accès aux variables globales à partir d'une classe est un défi courant rencontré dans les applications orientées objet. programmation. Cet article aborde le problème spécifiquement en PHP, en fournissant des solutions alternatives à l'erreur « Appel à une requête de fonction membre () sur un non-objet ».

Le problème

Dans l'extrait de code fourni , l'erreur fatale survient lors de la tentative d'appel de la méthode query() sur la variable $db au sein de la méthode get_records() de la classe pagi. La cause première est l'absence de connexion établie entre la classe et l'objet global $db.

Solutions alternatives

1. Injection de dépendances

L'injection de dépendances est un modèle de conception qui consiste à transmettre les objets requis en tant que paramètres à la classe. Dans ce cas, l'objet de connexion à la base de données (c'est-à-dire $db) serait injecté dans le constructeur de la classe pagi. Cette méthode garantit que la classe a accès à la variable globale sans recourir à la portée globale.

2. Injection de paramètres de méthode

Alternativement, l'objet de connexion à la base de données peut être transmis en tant que paramètre à la méthode get_records() elle-même. Bien que cette méthode n'améliore pas nécessairement l'encapsulation, elle permet une plus grande flexibilité dans la gestion des dépendances.

Avantages de l'injection de dépendances

1. Couplage lâche :

L'injection de dépendances favorise le couplage lâche entre les classes, ce qui facilite l'échange des dépendances selon les besoins. Dans ce scénario, il serait simple de passer à une autre connexion à la base de données sans modifier le code de la classe pagi.

2. Tests unitaires :

En transmettant les dépendances via des paramètres, les tests unitaires peuvent être effectués plus efficacement. Au lieu de tester plusieurs classes simultanément, seule l'unité spécifique (dans ce cas, la classe pagi) est testée.

Conclusion

L'injection de dépendances et l'injection de paramètres de méthode offrent des solutions viables pour accéder aux variables globales. au sein d'une classe. Le choix entre les deux approches dépend des exigences spécifiques de conception de l'application. En fin de compte, les deux méthodes visent à maintenir l'encapsulation tout en donnant accès aux ressources externes nécessaires.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn