Problème à l'hydratation données POO
Résolu
stupidon737
Messages postés
56
Date d'inscription
Statut
Membre
Dernière intervention
-
stupidon737 Messages postés 56 Date d'inscription Statut Membre Dernière intervention -
stupidon737 Messages postés 56 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je debute en PHP.
J'ai un problème à l'hydratation de mes données avec les codes suivants (je commente) :
Ce fichier s'appelle Personnage.classes.php et il contient l'hydratation des données, les getters et les setters
Un fichier de connexion : connexion.php
et un fichier qui recupere les fichiers dans la base de données : info_personnage.php
et ces codes me donnent :
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
Le nombre de ces lignes etant le nombre d'entrées dans ma base de données donc la connexion est ok.
J'ai commenté les hydratations et rien de changer. Donc je pense que c'est au niveau de l'hydratation qui pose problème. Ai-je lui mal placé dans mon code ?
Merci pour votre aide.
Je debute en PHP.
J'ai un problème à l'hydratation de mes données avec les codes suivants (je commente) :
Ce fichier s'appelle Personnage.classes.php et il contient l'hydratation des données, les getters et les setters
<?php class Personnage { private $_id; private $_nom; private $_forcePerso; private $_degats; private $_niveau; private $_experience; // Hydratation des données une version trop longue 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->setForcePerso($donnees['forcePerso']); } if(isset($donnees['degats'])) { $this->setDegats($donnees['degats']); } if(isset($donnees['niveau'])) { $this->setNiveau($donnees['niveau']); } if(isset($donnees['experience'])) { $this->setExperience($donnees['experience']); } } /* //Hydratation dynamique public function hydrate(array $donnees) { foreach($donnees AS $key => $value) { //On recupere dynamiquement le setter correspondant à l'attribut' $method = 'set'.ucfirst($key); //Si le setter correspondant existe : if(method_exists($this,$method)) { //on appelle le setter $this->$method($value); } } }*/ //Liste des getters public function id() { return $this->_id; } public function nom() { return $this->_nom; } public function forcePerso() { return $this->_forcePerso; } public function degats() { return $this->_degats; } public function niveau() { return $this->_niveau; } public function experience() { return $this->_experience; } //Liste des setters public function setId($id) { $id = (int) $id; if($id> 0) { $this->_id = $id; } } public function setNom($nom) { 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; } } } ?>
Un fichier de connexion : connexion.php
<?php try{ $db = new PDO("mysql:host=localhost;dbname=poo","root",""); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(exception $e) { die('Erreur :'. $e->getMessage()); } ?>
et un fichier qui recupere les fichiers dans la base de données : info_personnage.php
<?php require('connexion.php'); //Ce code charge dynamiquement les classes se trouvant dans le repertoire classe. function chargerClasse($classe) { require 'classes/'.$classe.'.classes.php'; } spl_autoload_register('chargerClasse'); $request = $db->query('SELECT id, nom, forcePerso, degats, niveau, experience FROM personnages'); while ($donnees = $request->fetch(PDO::FETCH_ASSOC)) { $perso = new Personnage($donnees); echo $perso->nom(), ' a ', $perso->forcePerso(), ' de force, ', $perso->degats(), ' de degats ', $perso->experience(), ' d\'experience et au niveau de ', $perso->niveau(), '<br/>'; } ?>
et ces codes me donnent :
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
a de force, de degats d'experience et au niveau de
Le nombre de ces lignes etant le nombre d'entrées dans ma base de données donc la connexion est ok.
J'ai commenté les hydratations et rien de changer. Donc je pense que c'est au niveau de l'hydratation qui pose problème. Ai-je lui mal placé dans mon code ?
Merci pour votre aide.
A voir également:
- Problème à l'hydratation données POO
- Fuite données maif - Guide
- Supprimer les données de navigation - Guide
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Excel validation des données liste - Guide