Classes PHP et MySQL
Posté : 23 mars 2011, 11:41
Bonjour,
Je suis en face d'un petit soucis de compréhension.
Je suis en train d'intégrer de l'objet (je débute avec ce type de prog) dans un site réalisé en procédural (ou évènementiel pour certains). Ma première classe concerne la gestions des utilisateurs. Tout fonctionne, mais un truc me titille.
Voici mon constructeur :
Vous remarquez que je me connecte à la BDD pour ensuite faire mes requêtes. Ce qui m'inquiète, c'est qu'au moment où je vais créer plusieurs objets et d'autres classes, je vais refaire la même chose lorsque je devrais me connecter à ma BDD... Et cela va générer plusieurs connexion simultanées ! De plus, si je dois modifier l'utilisateur ou le base, je vais avoir un travail de titan...
Seulement, je n'arrive pas à visualiser comment avoir une seule connexion pour toutes les classes, afin qu'elles gèrent directement les requêtes...
EDIT : J'ai entendu parler de la sérialisation, je ne sais pas si c'est conseillé pour mon cas...
EDIT 2 : Désormais, j'ouvre ma connexion en début de page ($connexion = new mysqli(...)) puis dans mes classes j'appelle la connexion ouverte (global $connexion). Je ne sais pas si c'est la meilleure solution, mais en tout cas je n'ai plus qu'une connexion
(enfin je crois... D'ailleurs, comment le vérifier?) Si vous avez mieux à proposer, je suis prenant !
Merci d'avance pour votre aide !
Je suis en face d'un petit soucis de compréhension.
Je suis en train d'intégrer de l'objet (je débute avec ce type de prog) dans un site réalisé en procédural (ou évènementiel pour certains). Ma première classe concerne la gestions des utilisateurs. Tout fonctionne, mais un truc me titille.
Voici mon constructeur :
Code : Tout sélectionner
public function __construct($id = false){
// Récupération de l'user dans la BDD
$this->connexion = new mysqli('localhost', 'root', 'pass', 'my_db');
if($id){ $this->SelectionUtilisateur($id); }
}
// Selectionner l'utilisateur dans la BDD
public function SelectionUtilisateur($id){
// Récupération de l'user dans un tableau
$result = $this->connexion->query("SELECT niveau_admin, utilisateur, motdepasse, nom, prenom, email, tel_fixe, tel_port FROM user WHERE user_id = ".$id);
$user = $result->fetch_object();
$result->close();
//Valorisation de l'objet
$this->id = $id;
$this->niveau = $user->niveau_admin;
$this->utilisateur = $user->utilisateur;
$this->motdepasse = $user->motdepasse;
$this->nom = $user->nom;
$this->prenom = $user->prenom;
$this->email = $user->email;
$this->telfixe = $user->tel_fixe;
$this->telport = $user->tel_port;
}
Seulement, je n'arrive pas à visualiser comment avoir une seule connexion pour toutes les classes, afin qu'elles gèrent directement les requêtes...
EDIT : J'ai entendu parler de la sérialisation, je ne sais pas si c'est conseillé pour mon cas...
EDIT 2 : Désormais, j'ouvre ma connexion en début de page ($connexion = new mysqli(...)) puis dans mes classes j'appelle la connexion ouverte (global $connexion). Je ne sais pas si c'est la meilleure solution, mais en tout cas je n'ai plus qu'une connexion
Merci d'avance pour votre aide !