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.