Bonjour
j'essaye de ma former à l'objet, je pensais avoir à peu près compris, mais apparement non.
je sus le cours d'open class room sur le php objet, j'en suis au chapitre manipulation de données stockées,
j'essaye de reproduire l'exemple mais rien ne s'affiche. J'imagine que mes objets ne sont pas correctement remplis mais je ne ne vois pas ou.
La manière procédurale affichée en dessous fonctionne.
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 <?php include_once'perso2.class.php'; $bdd = new PDO('mysql:host=localhost;dbname=objet;charset=utf8', 'root', ''); $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // On admet que $db est un objet PDO. $request = $bdd->query('SELECT id, nom, forcePerso, degats FROM personnages'); while ($donnees = $request->fetch(PDO::FETCH_ASSOC)) // Chaque entrée sera récupérée et placée dans un array. { // On passe les données (stockées dans un tableau) concernant le personnage au constructeur de la classe. // On admet que le constructeur de la classe appelle chaque setter pour assigner les valeurs qu'on lui a données aux attributs correspondants. $perso = new Personnage($donnees); echo"l'id",$perso->id(), $perso->nom(), ' a ', $perso->forcePerso(), ' de force, ', $perso->degats(), ' de dégâts, '; } echo"<h1> methode procédurale </h1>"; $request = $bdd->query('SELECT FROM personnages'); while ($perso = $request->fetch(PDO::FETCH_ASSOC)) // Chaque entrée sera récupérée et placée dans un array. { echo $perso['nom'], ' a ', $perso['forceperso'], ' de force, ', $perso['degats'], ' de dégâts, '; }
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103 <?php class Personnage { private $_id; private $_nom; private $_forceperso; private $_degats; // Un tableau de données doit être passé à la fonction (d'où le préfixe « array »). public function hydrate(array $donnees) { if (isset($donnees['id'])) { $this->setId($donnees['id']); } if (isset($donnees['nom'])) { $this->setNom($donnees['nom']); } if (isset($donnees['forceperso'])) { $this->setNom($donnees['forceperso']); } if (isset($donnees['degats'])) { $this->setNom($donnees['degats']); } } public function id() { return $this->_id; } public function nom() { return $this->_nom; } public function forcePerso() { return $this->_forceperso; } public function degats() { return $this->_degats; } // Liste des setters public function setId($id) { // On convertit l'argument en nombre entier. // Si c'en était déjà un, rien ne changera. // Sinon, la conversion donnera le nombre 0 (à quelques exceptions près, mais rien d'important ici). $id = (int) $id; // On vérifie ensuite si ce nombre est bien strictement positif. if ($id > 0) { // Si c'est le cas, c'est tout bon, on assigne la valeur à l'attribut correspondant. $this->_id = $id; } } public function setNom($nom) { // On vérifie qu'il s'agit bien d'une chaîne de caractères. if (is_string($nom)) { $this->_nom = $nom; } } public function setForcePerso($forcePerso) { $forcePerso = (int) $forcePerso; if ($forcePerso >= 1 && $forcePerso <= 100) { $this->_forcePerso = $forcePerso; } } public function setDegats($degats) { $degats = (int) $degats; if ($degats >= 0 && $degats <= 100) { $this->_degats = $degats; } } public function setNiveau($niveau) { $niveau = (int) $niveau; if ($niveau >= 1 && $niveau <= 100) { $this->_niveau = $niveau; } } public function setExperience($experience) { $experience = (int) $experience; if ($experience >= 1 && $experience <= 100) { $this->_experience = $experience; } } } ?>









Répondre avec citation






Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Partager