Připojení mysqli lze snadno sdílet mezi instancemi tak, že je jednou vytvoříte v zaváděcím souboru a poté jej předáte instancím, které to potřebují, např.
$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);
To účinně omezí připojení na jedno a nemusíte se uchylovat ke globálům uvnitř vašich objektů. Toto se nazývá Dependency Injection a měl by to být váš preferovaný způsob přiřazování závislostí objektům. Díky tomu jsou závislosti explicitní a snadno vyměnitelné, což přináší výhody pro změnu, testování a údržbu.
Pokud jde o vaši úlohu importu a exportu, zajímalo by mě, proč to v PHP vůbec děláte. Je to zjevně stejný databázový server, takže to můžete udělat pouze ve své instanci MySql. Pokud to chcete udělat s PHP, pravděpodobně bych udělal něco takového:
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
}
}
Můžete extrahovat metody importu a exportu do jejich vlastních tříd a pak použít nějaký druh Kompozitní Vzor příkazů , ale to opravdu záleží na tom, jak modulární to potřebujete.