Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Acces a une base de donnees da ns une classe : Maniere de faire...

2 réponses
Avatar
Bruno Baguette
Bonjour,

De temps en temps, je dois corriger ou étendre des classes PHP qui
doivent interagir avec une base de données.

J'ai vu plusieurs manières de faire exploitées dans ces classes :
1) La chaine de connection est hardcodée dans le constructeur de la
classe (très crade).
2) Le constructeur prend un argument qui est la chaine de connection à
la base de données et se connecte lui-même à la base de données.
3) La classe va chercher une constante qui se trouve dans un
require_once situé avant la classe et se connecte lui-même à la base de
données (ce qui ne me plait pas car ca ajoute une dépendance).
4) Le constructeur prend un handle retourné par un pg_connect() effectué
avant de faire une instance de la classe.

Personnellement, j'aurais tendance à privilégier la technique (2), voire
la technique (4).

Ceci dit, je suis intéressé pour avoir vos avis à ce sujet là :-)

D'avance merci !

--
Bruno BAGUETTE - bouchon@alussinan.org

2 réponses

Avatar
Clifden

Ceci dit, je suis intéressé pour avoir vos avis à ce sujet là :-)



2 facons de faire pour ma part:

préambule
J'ai une classe qui me sert de wrapper à ma BD. Dans le cas ou j'ai
besoin d'avoir accès à plusieurs BD en meme temps, je met chacune des
instances a cette classe dans un tableau:

$db['base1'],$db['base2']

ma variable est déclarée en globale, initialisée par un head.inc.php qui
est en require de partout.

Ensuite, je fait soit:

technique 1) dans mes classes un global $db
technique 2) passe par paramètre à mon constructeur de ma classe la
variable $db

Avatar
Pozzo
Bruno Baguette wrote:
Personnellement, j'aurais tendance à privilégier la technique (2), voire
la technique (4).


J'abonde dans ce sens...

Personnellement je dirais que la solution 2 est préférable si votre
classe permet de faire plusieurs requetes sans avoir à instancier
plusieurs objets (et donc faire plusieurs connexions à la base en
parallèle, ce qui serait inutile).

La technique 4 peut être intéressante si vous utilisez votre classe pour
l'inclure dans un script php déjà existant et ouvrant déjà une connexion
à une base. Dans ce cas l'utilisation de la classe n'ouvrira pas de
connexion supplémentaire et ne nécessitera pas de modifier le code
source existant. C'est nettement moins propre, mais c'est facile à faire
(à maintenir c'est moins sur...)

--
Pozzo - Monsieur Propre