Heim >Backend-Entwicklung >PHP-Tutorial >Wie greife ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Variablen (wie ein Datenbankobjekt) zu?
Globale Variablen in einer Klasse verwenden
Sie versuchen, eine Paginierungsklasse zu erstellen, die eine externe Variable verwendet. Es tritt jedoch ein Fehler auf: „Aufruf einer Mitgliedsfunktion query() für ein Nicht-Objekt.“
Das Problem entsteht, weil auf die externe Variable $db innerhalb der Klasse nicht direkt zugegriffen werden kann. Um dieses Problem zu lösen, werden wir zwei Hauptansätze untersuchen:
Ansatz 1: Abhängigkeitsinjektion
Abhängigkeitsinjektion beinhaltet die Übergabe des Datenbankobjekts als Argument an den Konstruktor der Klasse. Diese Methode stellt sicher, dass die Klasse Zugriff auf die notwendige Abhängigkeit hat.
class Paginator { protected $db; public function __construct(DB_MySQL $db) { $this->db = $db; } public function get_records($q) { $x = $this->db->query($q); return $this->db->fetch($x); } }
Ansatz 2: Methodeninjektion
Alternativ können Sie das Datenbankobjekt als Argument übergeben auf die spezifische Methode, die dies erfordert. Dieser Ansatz eignet sich, wenn nur wenige Methoden Zugriff auf die Abhängigkeit benötigen.
class Paginator { public function get_records($q, DB_MySQL $db) { $x = $db->query($q); return $db->fetch($x); } }
Die Wahl zwischen diesen Ansätzen hängt von Ihren spezifischen Anforderungen ab. Die Abhängigkeitsinjektion wird bevorzugt, wenn mehrere Methoden die Abhängigkeit erfordern, während die Methodeninjektion für die begrenzte Verwendung von Abhängigkeiten geeignet ist.
Das obige ist der detaillierte Inhalt vonWie greife ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Variablen (wie ein Datenbankobjekt) zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!