Mysql
 sql >> Database >  >> RDS >> Mysql

Riutilizza l'ereditarietà degli oggetti PHP della connessione MySQL

La connessione mysqli è abbastanza facile da condividere tra le istanze creandola una volta nel tuo file bootstrap e poi passandola alle istanze che ne hanno bisogno, ad es.

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

Ciò limiterà efficacemente la connessione a uno e non è necessario ricorrere a globali all'interno dei tuoi oggetti. Questo è chiamato Dependency Injection e dovrebbe essere il tuo modo preferito per assegnare dipendenze agli oggetti. Rende le dipendenze esplicite e facili da sostituire, apportando vantaggi a modifiche, test e manutenzione.

Per quanto riguarda la tua attività di importazione ed esportazione, mi chiedo perché lo stai facendo in PHP. Apparentemente è lo stesso server di database, quindi potresti farlo semplicemente all'interno della tua istanza MySql. Se vuoi farlo con PHP, probabilmente farei qualcosa del genere:

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

Puoi estrarre i metodi di importazione ed esportazione nelle proprie classi e quindi utilizzare una sorta di Composito Schema di comando , ma dipende davvero da quanto modulare hai bisogno che sia.