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

Zalecany sposób przekazywania połączenia danych do klasy/metody PHP?

Przekazywanie parametrów połączenia do klas ma wiele wad i nie ma żadnych korzyści. Jesteś na dobrej drodze, ale chcesz przekazać obiekt bazy danych zamiast ciągu połączenia.

Wstrzykiwanie zależności to dobry sposób na umożliwienie klasom dostępu do bazy danych, co oznacza po prostu przekazanie zależności (tj. obiektu bazy danych) do obiektów, które ich potrzebują, zamiast uzyskiwania zależności przez sam obiekt z jakiejś zmiennej globalnej.

Sugerowałbym użycie metody takiej jak setDb() na swoich klasach, aby przekazać obiekty bazy danych, a następnie przechowywać je jako właściwość do użytku wewnętrznego.

Na przykład zakładając, że utworzyłeś obiekt bazy danych $db w skrypcie inicjującym:

class SomeClass
{
    protected $db;

    public function setDb($db)
    {
        $this->db = $db;
    }

    public function something()
    {
        // do some query on the database using $this->db
    }
}

$obj = new SomeClass();
$obj->setDb($db);

$obj->something();

DI daje korzyści, o których wspomniałeś:możliwość łatwego przełączania bazy danych bez konieczności wykonywania dużej ilości pracy w swoich metodach. Są też inne korzyści, a mianowicie łatwość testowania.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dziennik uruchamiania MySQL 5.7.17 pokazujący [Uwaga] Odmowa dostępu dla użytkownika 'UNKNOWN_MYSQL_USER'

  2. Nieprawidłowe rzutowanie podczas zwracania mysql LAST_INSERT_ID() przy użyciu dapper.net

  3. Klucze obce w MySQL?

  4. Moje wywołanie Ajax nie działa — próbuję wypełnić jstree za pomocą ajax php i mysql JSON

  5. Konwertuj DateTime w C# na format rrrr-MM-dd i zapisz go w MySql DateTime Field