Heim > Datenbank > MySQL-Tutorial > Wie kann ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Objekte zugreifen?

Wie kann ich innerhalb einer PHP-Klasse ordnungsgemäß auf externe Objekte zugreifen?

Susan Sarandon
Freigeben: 2025-01-18 00:10:38
Original
573 Leute haben es durchsucht

How Can I Properly Access External Objects Within a PHP Class?

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

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

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

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage