Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Ponowne użycie dziedziczenia obiektów PHP połączenia MySQL

Połączenie mysqli można łatwo udostępniać między instancjami, tworząc je raz w pliku startowym, a następnie przekazując je do instancji, które go potrzebują, np.

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

To skutecznie ograniczy połączenie do jednego i nie będziesz musiał uciekać się do globalnych wewnątrz swoich obiektów. Nazywa się to wstrzykiwaniem zależności i powinno być preferowanym sposobem przypisywania zależności do obiektów. Sprawia, że ​​zależności są jawne i łatwe do wymiany, a tym samym korzyści ze zmiany, testowania i konserwacji.

Co do zadania importu i eksportu, zastanawiam się, dlaczego w ogóle robisz to w PHP. To najwyraźniej ten sam serwer bazy danych, więc możesz to zrobić po prostu wewnątrz swojej instancji MySql. Jeśli chcesz to zrobić za pomocą PHP, prawdopodobnie zrobiłbym coś takiego:

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

Możesz wyodrębnić metody Import i Export do ich własnych klas, a następnie użyć jakiegoś Kompozyt Wzorzec polecenia , ale to naprawdę zależy od tego, jak modułowy ma to być.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć część ciągu w mysql?

  2. Jak używać BIGINT jako automatycznego przyrostowego klucza głównego w Laravel 4?

  3. Błąd Forward Engineering MySQL Workbench 1064

  4. Import MySQL CSV - data wprowadzona jako 0000-00-00 00:00:00 jeśli znacznik czasu ma milisekundy?

  5. Policz liczbę zapytań przy każdej załadowanej stronie z PDO