Mysql
 sql >> Base de données >  >> RDS >> Mysql

Réutiliser l'héritage d'objet PHP de la connexion MySQL

La connexion mysqli est assez facile à partager entre les instances en la créant une fois dans votre fichier d'amorçage, puis en la transmettant aux instances qui en ont besoin, par exemple

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

Cela limitera efficacement la connexion à un et vous n'aurez pas besoin de recourir à des globals à l'intérieur de vos objets. C'est ce qu'on appelle l'injection de dépendance et devrait être votre moyen préféré d'attribuer des dépendances aux objets. Il rend les dépendances explicites et faciles à échanger et profite ainsi au changement, aux tests et à la maintenance.

En ce qui concerne votre tâche d'importation et d'exportation, je me demande pourquoi vous faites cela en PHP. C'est apparemment le même serveur de base de données, donc vous pouvez simplement le faire dans votre instance MySql. Si vous voulez le faire avec PHP, je ferais probablement quelque chose comme ça :

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 
    }
}

Vous pouvez extraire les méthodes d'importation et d'exportation dans leurs propres classes, puis utiliser une sorte de Composite Modèle de commande , mais cela dépend vraiment de la modularité dont vous avez besoin.