Връзката mysqli е достатъчно лесна за споделяне между екземпляри, като я създадете веднъж във вашия начален файл и след това го предадете на инстанции, които се нуждаят от нея, напр.
$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);
Това на практика ще ограничи връзката до една и не е необходимо да прибягвате до глобали във вашите обекти. Това се нарича инжектиране на зависимости и трябва да бъде вашият предпочитан начин за присвояване на зависимости към обекти. Той прави зависимостите ясни и лесни за размяна и по този начин облагодетелства промяната, тестването и поддръжката.
Що се отнася до вашата задача за импортиране и експортиране, чудя се защо изобщо правите това в PHP. Очевидно това е един и същ сървър на база данни, така че можете просто да го направите във вашия MySql екземпляр. Ако искате да го направите с PHP, вероятно бих направил нещо подобно:
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
}
}
Можете да извлечете методите за импортиране и експортиране в техните собствени класове и след това да използвате някакъв вид Композитен Команден модел , но това наистина зависи от това колко модулно трябва да бъде това.