sql >> Database teknologi >  >> RDS >> Mysql

Anbefalet måde at overføre dataforbindelse til en PHP klasse/metode?

At sende en forbindelsesstreng til dine klasser har mange ulemper og ingen fordele. Du er på rette vej, men du vil videregive databaseobjektet i stedet for en forbindelsesstreng.

Dependency Injection er en god måde at give dine klasser adgang til databasen på, hvilket simpelthen betyder at videregive afhængigheder (dvs. databaseobjekt) til de objekter, der har brug for dem, i stedet for at objektet selv opnår afhængigheden fra en global variabel af en eller anden art.

Jeg vil foreslå, at du bruger en metode som setDb() på dine klasser for at videregive databaseobjekterne, og derefter gemme det som en egenskab til enhver intern brug.

For eksempel, hvis du antager, at du har oprettet databaseobjektet $db i et initialiseringsscript:

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 giver dig de fordele, som du nævnte:muligheden for nemt at skifte db uden at skulle gøre en masse arbejde i dine metoder. Der er andre fordele, nemlig nem test.



  1. Underforespørgsel ved hjælp af Exists 1 eller Exists *

  2. Docker-compose afhænger af ikke at vente, indtil afhængig af tjenesten ikke er helt startet

  3. Oracle CREATE TABLE-kommando i PL/SQL med 10 eksempler

  4. MySQL-fejlkode:1030Fik fejl -1 fra lagermotoren; Jeg har forsøgt at slette data fra min database