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

Vererbung von PHP-Objekten für MySQL-Verbindungen wiederverwenden

Die mysqli-Verbindung kann problemlos zwischen Instanzen geteilt werden, indem Sie sie einmal in Ihrer Bootstrap-Datei erstellen und sie dann an Instanzen weitergeben, die sie benötigen, z. B.

$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);

Dadurch wird die Verbindung effektiv auf eine beschränkt, und Sie müssen nicht auf Globals in Ihren Objekten zurückgreifen. Dies wird als Abhängigkeitsinjektion bezeichnet und sollte Ihre bevorzugte Methode zum Zuweisen von Abhängigkeiten zu Objekten sein. Es macht Abhängigkeiten deutlich und lässt sich leicht austauschen und profitiert somit von Änderungen, Tests und Wartung.

Was Ihre Import- und Exportaufgabe betrifft, frage ich mich, warum Sie dies überhaupt in PHP tun. Es ist anscheinend derselbe Datenbankserver, also könnten Sie es einfach in Ihrer MySql-Instanz tun. Wenn Sie es mit PHP machen wollen, würde ich wahrscheinlich so etwas tun:

class MigrateForum
{
    private $dbConnector;

    public function __construct(DBConnector $dbConnector)
    {
        $this->dbConnector = $dbConnector;
    }

    public function migrate()
    {
        // orchestrate the migration (consider transactions)
        $this->exportOldForum();
        $this->importNewForum();
    }

    private function exportOldForum()
    {
        // code to export old_database_name.table_name 
    }

    private function importOldForum()
    {
        // code to import new_database_name.table_name 
    }
}

Sie könnten die Import- und Export-Methoden in ihre eigenen Klassen extrahieren und dann eine Art von Komposit Befehlsmuster , aber das hängt wirklich davon ab, wie modular Sie dies benötigen.