Połączenie mysqli można łatwo udostępniać między instancjami, tworząc je raz w pliku startowym, a następnie przekazując je do instancji, które go potrzebują, np.
$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);
To skutecznie ograniczy połączenie do jednego i nie będziesz musiał uciekać się do globalnych wewnątrz swoich obiektów. Nazywa się to wstrzykiwaniem zależności i powinno być preferowanym sposobem przypisywania zależności do obiektów. Sprawia, że zależności są jawne i łatwe do wymiany, a tym samym korzyści ze zmiany, testowania i konserwacji.
Co do zadania importu i eksportu, zastanawiam się, dlaczego w ogóle robisz to w PHP. To najwyraźniej ten sam serwer bazy danych, więc możesz to zrobić po prostu wewnątrz swojej instancji MySql. Jeśli chcesz to zrobić za pomocą PHP, prawdopodobnie zrobiłbym coś takiego:
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
}
}
Możesz wyodrębnić metody Import i Export do ich własnych klas, a następnie użyć jakiegoś Kompozyt Wzorzec polecenia , ale to naprawdę zależy od tego, jak modułowy ma to być.