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:
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);
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);
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!