De mysqli-verbinding is eenvoudig genoeg om te delen tussen instanties door deze eenmaal in uw bootstrap-bestand te maken en vervolgens door te geven aan instanties die het nodig hebben, bijvoorbeeld
$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);
Dat zal de verbinding effectief beperken tot één en u hoeft geen toevlucht te nemen tot globals in uw objecten. Dit wordt Dependency Injection genoemd en zou uw voorkeursmanier moeten zijn om afhankelijkheden aan objecten toe te wijzen. Het maakt afhankelijkheden expliciet en gemakkelijk uit te wisselen en komt dus ten goede aan verandering, testen en onderhoud.
Wat betreft je import- en exporttaak, ik vraag me af waarom je dit überhaupt in PHP doet. Het is blijkbaar dezelfde databaseserver, dus je zou het gewoon in je MySql-instantie kunnen doen. Als je het met PHP wilt doen, zou ik waarschijnlijk zoiets als dit doen:
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
}
}
U kunt de import- en exportmethoden extraheren in hun eigen klassen en vervolgens een soort Composiet Opdrachtpatroon , maar dat hangt er echt van af hoe modulair je dit nodig hebt.