Bonjour,

Comment réutiliser une connexion SQL dans une classe. Il y a certes les variables globales 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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

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 ... 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