sql >> Databáze >  >> RDS >> Mysql

Znovu použijte připojení MySQL Dědičnost objektů PHP

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.



  1. Zjišťování a klasifikace dat SQL

  2. php, postgresql, mysql

  3. vypršel časový limit. všechna sdružená připojení byla používána a maximální velikost fondu byla dosažena

  4. Získání NoSuchMethodError:javax.persistence.Table.indexes() při provádění dotazu JPA