Heim >Datenbank >MySQL-Tutorial >Wie kann ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Objekte zugreifen?
Globale Variablen in der Klasse verwenden
In PHP kann mit dem Schlüsselwort global
aus einer Klasse heraus auf globale Variablen zugegriffen werden. Dies kann jedoch zu Problemen bei der Lesbarkeit und Wartbarkeit des Codes führen. Betrachten Sie das folgende Codebeispiel:
<code class="language-php">$db = new DB_MySQL("localhost", "root", "", "test"); // 连接数据库 include_once("pagi.php"); $pagination = new pagi(); $records = $pagination->get_records("SELECT * FROM `table`");</code>
in pagi.php
Datei:
<code class="language-php">class pagi { public function get_records($q) { global $db; $x = $db->query($q); return $db->fetch($x); } }</code>
Dieser Code versucht, eine get_records
-Variable außerhalb der pagi
-Klasse in einer $db
-Methode zu verwenden. Dies führt jedoch zu einem schwerwiegenden Fehler, da über den Operator ->
nicht auf globale Variablen zugegriffen werden kann.
Abhängigkeitsinjektion: Ein besserer Weg
Eine bessere Möglichkeit, auf externe Objekte zuzugreifen, ist die Abhängigkeitsinjektion. Bei diesem Ansatz wird das externe Objekt als Parameter an den Konstruktor oder die Methode der Klasse übergeben. Zum Beispiel:
<code class="language-php">$db = new DB_MySQL("localhost", "root", "", "test"); // 连接数据库 include_once("pagi.php"); $pagination = new Paginator($db); $records = $pagination->get_records("SELECT the, fields, you, want, to retrieve FROM `table`");</code>
<code class="language-php">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); } }</code>
In diesem Fall wird das $db
-Objekt über den Konstruktor an die Paginator
-Klasse übergeben. Dadurch kann eine Klasse Abfragen mithilfe des $db
-Objekts durchführen, ohne es als globale Variable festzulegen oder eine neue Instanz innerhalb der Klasse zu erstellen.
Fazit
Während die Verwendung globaler Variablen praktisch sein kann, ist die Abhängigkeitsinjektion eine flexiblere und einfacher zu verwaltende Methode zum Hinzufügen externer Funktionalität zu einer Klasse. Durch die explizite Übergabe von Abhängigkeiten entkoppeln Sie eine Klasse von einer bestimmten Implementierung und erleichtern das Testen und Warten.
Das obige ist der detaillierte Inhalt vonWie kann ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Objekte zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!