Passer une chaîne de connexion à vos classes présente de nombreux inconvénients et aucun avantage. Vous êtes sur la bonne voie, mais vous souhaitez transmettre l'objet de base de données au lieu d'une chaîne de connexion.
L'injection de dépendance est un bon moyen de donner à vos classes l'accès à la base de données, ce qui signifie simplement passer des dépendances (c'est-à-dire un objet de base de données) aux objets qui en ont besoin, plutôt que l'objet lui-même obtienne la dépendance d'une variable globale quelconque. /P>
Je suggérerais que vous utilisiez une méthode comme setDb()
sur vos classes pour transmettre les objets de la base de données, puis stockez-le en tant que propriété pour toute utilisation interne.
Par exemple, en supposant que vous avez créé l'objet de base de données $db
dans un script d'initialisation :
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 vous offre les avantages que vous avez mentionnés :la possibilité de changer facilement de base de données sans avoir à faire beaucoup de travail dans vos méthodes. Il existe d'autres avantages, à savoir la facilité de test.