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

Doporučený způsob předání datového připojení do třídy / metody PHP?

Předání připojovacího řetězce vašim třídám má spoustu nevýhod a žádné výhody. Jste na správné cestě, ale místo připojovacího řetězce chcete předat objekt databáze.

Dependency Injection je dobrý způsob, jak dát svým třídám přístup k databázi, což jednoduše znamená předávat závislosti (tj. databázový objekt) objektům, které je potřebují, než aby samotný objekt získával závislost z nějaké globální proměnné.

Navrhoval bych, abyste použili metodu jako setDb() na vašich třídách, abyste předali databázové objekty a poté je uložili jako vlastnost pro jakékoli interní použití.

Například za předpokladu, že jste vytvořili databázový objekt $db v inicializačním skriptu:

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 vám dává výhody, které jste zmínil:možnost snadno přepínat db, aniž byste museli dělat spoustu práce ve vašich metodách. Existují další výhody, konkrétně snadné testování.



  1. JSON_INSERT() vs JSON_SET() vs JSON_REPLACE() v SQLite

  2. Předat více hodnot v jednom parametru

  3. Co přesně se stalo s operací indexování?

  4. Procedura oracle pomocí příkazu Host().