Maison >développement back-end >tutoriel php >Comment puis-je accéder aux variables globales dans une classe PHP sans erreurs ?
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 ».
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.
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.
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.
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!