Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Reutilizar a herança de objetos PHP de conexão MySQL


A conexão mysqli é fácil o suficiente para compartilhar entre instâncias, criando-a uma vez em seu arquivo bootstrap e, em seguida, passando-a para instâncias que precisam, por exemplo,
$mysqli = new mysqli(/* connection params */);
$someClassUsingMySqli = new SomeClassUsingMySqli($mysqli);
$anotherClassUsingMySqli= new AnotherClassUsingMySqli($mysqli);

Isso limitará efetivamente a conexão a um e você não precisará recorrer a globais dentro de seus objetos. Isso é chamado de injeção de dependência e deve ser sua maneira preferida de atribuir dependências a objetos. Ele torna as dependências explícitas e fáceis de trocar e, portanto, beneficia a mudança, o teste e a manutenção.

Quanto à sua tarefa de importação e exportação, eu me pergunto por que você está fazendo isso em PHP. Aparentemente é o mesmo servidor de banco de dados, então você pode fazer isso dentro de sua instância MySql. Se você quiser fazer isso com PHP, eu provavelmente faria algo assim:
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 
    }
}

Você pode extrair os métodos de importação e exportação em suas próprias classes e, em seguida, usar algum tipo de Composto Padrão de comando , mas isso realmente depende de quão modular você precisa que isso seja.