Heim > Backend-Entwicklung > PHP-Tutorial > Wie greife ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Variablen (wie ein Datenbankobjekt) zu?

Wie greife ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Variablen (wie ein Datenbankobjekt) zu?

DDD
Freigeben: 2024-12-07 03:08:14
Original
998 Leute haben es durchsucht

How to Properly Access External Variables (like a Database Object) within a PHP Class?

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);
    }
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage