sql >> Databasteknik >  >> RDS >> Mysql

Återanvänd MySQL-anslutning PHP-objekt arv

Mysqli-anslutningen är lätt nog att dela mellan instanser genom att skapa den en gång i din bootstrap-fil och sedan skicka den till instanser som behöver den, t.ex.

$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);

Det kommer effektivt att begränsa anslutningen till en och du behöver inte ta till globaler inuti dina objekt. Detta kallas Dependency Injection och bör vara ditt föredragna sätt att tilldela beroenden till objekt. Det gör beroenden tydliga och lätta att byta ut och gynnar därmed förändring, testning och underhåll.

När det gäller din import- och exportuppgift undrar jag varför du överhuvudtaget gör detta i PHP. Det är tydligen samma databasserver, så du kan bara göra det i din MySql-instans. Om du vill göra det med PHP, skulle jag förmodligen göra något så här:

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 
    }
}

Du kan extrahera import- och exportmetoderna i deras egna klasser och sedan använda någon sorts Komposit Kommandomönster , men det beror verkligen på hur modulärt du behöver det här.



  1. Postgres bytea-kolumn returnerar sträng (char array) istället för byte array

  2. Få ett returvärde i C# asp.net från en lagrad procedur (syntaxproblem)

  3. Ordna kolumnen efter vissa kriterier i mysql

  4. Geo Django mac OS X