sql >> Databasteknik >  >> RDS >> Mysql

Rekommenderat sätt att skicka dataanslutning till en PHP-klass/metod?

Att skicka en anslutningssträng till dina klasser har många nackdelar och inga fördelar. Du är på rätt väg, men du vill skicka databasobjektet istället för en anslutningssträng.

Dependency Injection är ett bra sätt att ge dina klasser tillgång till databasen, vilket helt enkelt betyder att skicka beroenden (dvs. databasobjekt) till objekten som behöver dem, snarare än att objektet självt erhåller beroendet från en global variabel av något slag.

Jag skulle föreslå att du använder en metod som setDb() på dina klasser för att skicka databasobjekten och sedan lagra den som en egenskap för internt bruk.

Om du till exempel antar att du har skapat databasobjektet $db i ett initialiseringsskript:

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 ger dig fördelarna som du nämnde:möjligheten att enkelt byta db utan att behöva göra mycket arbete i dina metoder. Det finns andra fördelar, nämligen att det är lätt att testa.



  1. PHP "smart" sökmotor för att söka Mysql-tabeller råd

  2. MySQL IFNULL() Förklarat

  3. Hur man gör en rullande summa, varje rad måste inkludera summan av tidigare rader

  4. C# .NET + PostgreSQL