Réutiliser une connexion SQL dans plusieurs classes
Bonjour,
Comment réutiliser une connexion SQL dans une classe. Il y a certes les variables globales :aie: :aie: mais je me refuse à cette idée !
Donc, j'initialise ma connexion SQL puis je transmet l'instance au constructeur de la classe.
Je vous donne un tout petit bout de code, pour comprendre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class MaClasse
{
private $sqlLink;
public function __construct($dbLink)
{
$this->sqlLink=$dbLink;
}
public function show()
{
$sqlData=$this->sqlLink->query("SELECT col FROM toto WHERE 1");
}
...
}
// Connexion au serveur de la base de données et selection de la base
$sqlLink = new mysqli(SQL_HOST,SQL_USER,SQL_PASS,SQL_BASE);
if(!$sqlLink) die("Impossible de se connecter à la base de données !!!");
// Initialisation des classes
$myvar=new MaClasse($sqlLink); |
Un ami me dit que cette methode donne un code peu lisible et que ma classe n'est pas
indépendante !
Lui me conseille d'utiliser les singletons ou d'initialiser la connexion SQL dans le constructeur, comme ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| class MaClasse
{
private $sqlLink;
public function __construct($dbLink)
{
$sqlLink = new mysqli(SQL_HOST,SQL_USER,SQL_PASS,SQL_BASE);
if(!$sqlLink) die("Impossible de se connecter à la base de données !!!");
}
public function show()
{
$sqlData=$this->sqlLink->query("SELECT col FROM toto WHERE 1");
}
...
}
// Initialisation des classes
$myvar=new MaClasse(); |
Cela sucite plusieurs questions chez moi.
1. Qu'est ce que les signeton ?
Bien que je sois en phase de recherche la dessus, je suis preneur de vos connaissances :mouarf:
2. Pourquoi mon code est-il peu lisible (s'il l'est) ?
3. Classe indépendante ?
Un quoi une classe doit elle être indépendante ? c'est une recommandation de PHP ? un code de "bonne pratiques" ?
4. Une connexion SQL par classe ... est ce bien raisonnable ?
Donc si mon script comporte 4 classes et que chacune d'elle utilise une connexion SQL, cela va signifier (pour moi) que chaque fois que le script est lancé, il y aura 4 connexions ouvertes sur le serveur SQL 8O 8O ... mon ami me dit que non !
Pourquoi ?
N'ayant pas la science (de PHP ;) ) infuse, je suis prêt a me remettre en question dans le but de produire un "meilleur" code. Mais je préfère me baser sur plusieurs avis qu'un seul !
Merci pour votre avis, conseils et autre :ccool: