Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Empfohlene Methode zum Übergeben der Datenverbindung an eine PHP-Klasse/-Methode?

Das Übergeben einer Verbindungszeichenfolge an Ihre Klassen hat viele Nachteile und keine Vorteile. Sie sind auf dem richtigen Weg, aber Sie möchten das Datenbankobjekt anstelle einer Verbindungszeichenfolge übergeben.

Abhängigkeitsinjektion ist eine gute Möglichkeit, Ihren Klassen Zugriff auf die Datenbank zu geben, was einfach bedeutet, Abhängigkeiten (dh Datenbankobjekte) an die Objekte zu übergeben, die sie benötigen, anstatt dass das Objekt selbst die Abhängigkeit von einer Art globaler Variable erhält.

Ich würde vorschlagen, dass Sie eine Methode wie setDb() verwenden auf Ihren Klassen, um die Datenbankobjekte zu übergeben und sie dann als Eigenschaft für den internen Gebrauch zu speichern.

Angenommen, Sie haben das Datenbankobjekt $db erstellt in einem Initialisierungsskript:

class SomeClass
{
    protected $db;

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

    public function something()
    {
        // do some query on the database using $this->db
    }
}

$obj = new SomeClass();
$obj->setDb($db);

$obj->something();

DI bietet Ihnen die Vorteile, die Sie erwähnt haben:die Möglichkeit, die DB einfach zu wechseln, ohne viel Arbeit in Ihre Methoden investieren zu müssen. Es gibt noch weitere Vorteile, nämlich das einfache Testen.