Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich innerhalb einer PHP-Klasse auf globale Variablen zugreifen?

Wie kann ich innerhalb einer PHP-Klasse auf globale Variablen zugreifen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-17 01:13:24540Durchsuche

How Can I Access Global Variables Within a PHP Class?

Zugriff auf globale Variablen innerhalb einer Klasse

In Ihrem Code tritt ein Fehler auf, wenn Sie versuchen, innerhalb einer Klassenmethode auf eine Variable zuzugreifen, die außerhalb der Klasse definiert ist. Dieses Problem entsteht, weil der direkte Zugriff auf globale Variablen innerhalb einer Klasse in PHP im Allgemeinen nicht empfohlen wird. Es gibt jedoch einige Methoden, um dies zu erreichen:

Abhängigkeitsinjektion

Der bevorzugte Ansatz ist die Implementierung der Abhängigkeitsinjektion. Dazu gehört die Übergabe des Datenbankobjekts als Argument an den Klassenkonstruktor, sodass die Klasse auf die Variable zugreifen und sie verwenden kann, ohne dass ein globaler Gültigkeitsbereich erforderlich ist.

class Paginator
{
    private $db;

    public function __construct(DB_MySQL $db)
    {
        $this->db = $db;
    }

    // ...
}

// Usage:
$db = new DB_MySQL("localhost", "root", "", "test");
$pagination = new Paginator($db);

Instanzen in Methoden einfügen

Alternativ , können Sie die Datenbankinstanz direkt in die Methode einfügen, die sie benötigt.

class Paginator
{
    public function get_records($q, DB_MySQL $db)
    {
        // ...
    }
}

// Usage:
$pagination = new Paginator();
$pagination->get_records("SELECT * FROM `table`", $db);

Mit Global Geltungsbereich

Obwohl allgemein davon abgeraten wird, können Sie das Schlüsselwort global verwenden, um auf globale Variablen innerhalb einer Klassenmethode zuzugreifen. Allerdings kann diese Technik den Code unübersichtlich machen und ihn weniger wartbar machen.

class Paginator
{
    public function get_records($q)
    {
        global $db;

        // ...
    }
}

// Usage:
$db = new DB_MySQL("localhost", "root", "", "test");
$pagination = new Paginator();

Denken Sie daran, dass die Verwendung globaler Variablen innerhalb einer Klasse potenzielle Nachteile mit sich bringt, darunter Abhängigkeitsprobleme, verringerte Testbarkeit und Probleme mit der Codeklarheit. Daher wird empfohlen, beim Zugriff auf Variablen von außerhalb einer Klasse in PHP die Abhängigkeitsinjektion oder das Einfügen von Instanzen in Methoden in Betracht zu ziehen.

Das obige ist der detaillierte Inhalt vonWie kann ich innerhalb einer PHP-Klasse auf globale Variablen zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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