


Zugriff auf globale Variablen innerhalb einer Klasse
Einführung
Das Dilemma, innerhalb einer Klasse auf globale Variablen zuzugreifen, ist eine häufige Herausforderung bei der objektorientierten Programmierung Programmierung. Dieser Artikel befasst sich speziell mit dem Problem in PHP und bietet alternative Lösungen für den Fehler „Call to a member function query() on a non-object“.
Das Problem
Im bereitgestellten Codeausschnitt , entsteht der schwerwiegende Fehler durch den Versuch, die Methode query() für die Variable $db innerhalb der Methode get_records() der Klasse pagi aufzurufen. Die Hauptursache ist das Fehlen einer etablierten Verbindung zwischen der Klasse und dem globalen $db-Objekt.
Alternative Lösungen
1. Abhängigkeitsinjektion
Abhängigkeitsinjektion ist ein Entwurfsmuster, bei dem die erforderlichen Objekte als Parameter an die Klasse übergeben werden. In diesem Fall würde das Datenbankverbindungsobjekt (d. h. $db) in den Konstruktor der Pagi-Klasse eingefügt. Diese Methode stellt sicher, dass die Klasse Zugriff auf die globale Variable hat, ohne auf den globalen Bereich zurückzugreifen.
2. Methodenparameterinjektion
Alternativ kann das Datenbankverbindungsobjekt als Parameter an die Methode get_records() selbst übergeben werden. Obwohl diese Methode nicht unbedingt die Kapselung verbessert, ermöglicht sie eine größere Flexibilität bei der Verwaltung von Abhängigkeiten.
Vorteile der Abhängigkeitsinjektion
1. Lose Kopplung:
Abhängigkeitsinjektion fördert die lose Kopplung zwischen Klassen und macht es einfacher, Abhängigkeiten nach Bedarf auszutauschen. In diesem Szenario wäre es einfach, zu einer anderen Datenbankverbindung zu wechseln, ohne den Code der Pagi-Klasse zu ändern.
2. Unit-Tests:
Durch die Weitergabe von Abhängigkeiten über Parameter können Unit-Tests effizienter durchgeführt werden. Anstatt mehrere Klassen gleichzeitig zu testen, wird nur die spezifische Einheit (in diesem Fall die Pagi-Klasse) getestet.
Fazit
Sowohl die Abhängigkeitsinjektion als auch die Methodenparameterinjektion bieten praktikable Lösungen für den Zugriff auf globale Variablen innerhalb einer Klasse. Die Wahl zwischen den beiden Ansätzen hängt von den spezifischen Designanforderungen der Anwendung ab. Letztendlich zielen beide Methoden darauf ab, die Kapselung aufrechtzuerhalten und gleichzeitig Zugriff auf notwendige externe Ressourcen zu ermöglichen.
Das obige ist der detaillierte Inhalt vonWie kann ich fehlerfrei auf globale Variablen innerhalb einer PHP-Klasse zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Die PHP -Protokollierung ist für die Überwachung und Debugie von Webanwendungen von wesentlicher Bedeutung sowie für das Erfassen kritischer Ereignisse, Fehler und Laufzeitverhalten. Es bietet wertvolle Einblicke in die Systemleistung, hilft bei der Identifizierung von Problemen und unterstützt eine schnellere Fehlerbehebung

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Alipay PHP ...

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),