Bonjour,
Je me met à nouveau sur la POO (je fait mon come back j'avais déjà eu du mal la première fois) et je bloc à nouveau sur la même question que la première fois.
Je vous explique
Actuellement j'utilise des fonctions du style :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 <?php // RECUPERATION DES INFOS DE TOUS LES UTILISATEURS function GetAll_Uilisateur() { $LesValeurs=Array(); $i=0; // ecriture de la requete $RQT='SELECT u.ID_UTILISATEUR, CONCAT(u.PRENOM, " ", u.NOM) as NomPrenom, u.EMAIL, s.NOM FROM utilisateur u INNER JOIN service s ON u.ID_SERVICE= s.ID_SERVICE ORDER BY PRENOM ASC '; $Query = @mysql_query($RQT); // execution de la requete // si la requète est correctement executée if($Query) { while($Fetch = mysql_fetch_assoc($Query)) { $LesValeurs[$i] = $Fetch; $i++; } return $LesValeurs; // on retorune les valeurs } else { echo 'Erreur lors de l\'execution de la fonction GetAll_Uilisateur veuillez contacter le developpeur'; } } ?>
Ensuite pour afficher le contenu :
Dans mon CONTROLEUR je fait
Et dans ma VUE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php /******************** RECUPERATION DES VALEURS ************************/ // recuperation du nombre d'utilisateur $Nb_Employe = count(GetAll_Utilisateur()); // recuperation des infos de tous les utilisateurs $All_Utilisateur = GetAll_Utilisateur(); ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php for($i=0; $i<$Nb_Utilisateur; $i++) { echo $All_Utilisateur[$i]['NomPrenom'].'<br/>'; // Nom et prenom de l'utilisateur echo $All_Utilisateur[$i]['EMAIL'].'<br/>'; // email de l'utilisateur echo $All_Utilisateur[$i]['NOM'].'<br/>'; // Nom du service } ?>
Maintenant je me demande comment je doit faire pour mes class.
Dans son tuto sur la POO, Victor ne soulève pas la possibilité de récupère les données sur plusieurs tables.
Ma question est donc : Comment doit-je m'y prendre?
Est ce que je doit créer une class pour chaque table?
En POO, il y a une phrase très importante qu'il faut que vous ayez constamment en tête : « Une classe, un rôle. » Maintenant, répondez clairement à cette question : « Quel est le rôle d'une classe commePersonnage» ?
Un objet instanciant une classe comme Personnage a pour rôle de représenter une ligne présente en BDD. Le verbe « représenter » est ici très important. En effet, « représenter » est très différent de « gérer ». Une ligne de la BDD ne peut pas s'auto-gérer ! C'est comme si vous demandiez à un ouvrier ayant construit un produit de le commercialiser : l'ouvrier est tout à fait capable de le construire, c'est sonrôle, mais il ne s'occupe pas du tout de sa gestion, il en est incapable. Il faut donc qu'une deuxième personne intervienne, un commercial, qui va s'occuper de vendre ce produit.
Je n'ai pas compris à 100% ce que voulais dire victor dans le paragraphe ci-dessus mais je pense que cela repond à ma question avec un grand NON.
Maintenant si je créé une class Utilisateur :
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
23
24
25
26
27
28
29
30
31 <?php class Utilisateur { // LISTE DES ATTRIBUTS private $_id_utilisateur; private $_nom; private $_prenom; private $_email; public function __construct($donnees) { $this -> hydrate($donnees); } public function hydrate(array $donnees) { foreach($donnees as $key => $value) { //On récupère le nom du setter correspondant à l'attribut $method = 'set'.ucfirst($key); //Si le setter correspondant existe if(method_exists($this, $method)) { //On appel le setter $this -> $method($value); } } } ?>
et une class UtilisateurManager 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
20
21
22
23
24
25
26
27
28
29
30
31
32 <?php class UtilisateurManager { private $_db; //insctance de pdo public function __construct($db) { $this -> setDb($db); } public function getAll() { $Query = $this -> _db -> query(' SELECT u.ID_UTILISATEUR, CONCAT(u.PRENOM, " ", u.NOM) as NomPrenom, u.EMAIL, s.NOM FROM utilisateur u INNER JOIN service s ON u.ID_SERVICE= s.ID_SERVICE ORDER BY PRENOM ASC ); while($donnees = $Query ->fetch(PDO::FETCH_ASSOC)) { $utilisateurs[] = new Utilisateur($donnees); } return $utilisateurs; } } ?>
Il est impossible de récupérer le nom du service de la table service.
voilà ce que je ne comprend pas
Dans ce cas comment je doit créer mes class si je me base sur la manière dont je créé mes fonctions actuellement (comme je vous ai montré au début.)
Partager