récupérer collection d'objets en PHP depuis une D.B. - PHP - Programmation
Marsh Posté le 25-01-2018 à 16:23:04
PDO s'occupe des attributs en leur affectant la valeur de la colonne du même nom.
Tu n'as donc pas besoin que ton constructeur s'en occupe ni de lui passer des paramètres.
=> Supprimes ton constructeur et le troisième paramètre de ton appel à PDOStatement::fetchAll.
Le problème, j'imagine, est que si ta classe n'est pas utilisée que par PDO, comment "hydrater" ton objet ? Dans ce cas, il faut rendre le(s) paramètre(s) de celui-ci optionnel(s) et/ou passer par les mutateurs quand tu crées toi-même un objet de façon à ce que la classe soit compatible avec le fonctionnement de PDO.
PS : pour le nom de la classe, à moins d'utiliser une vieille version de PHP (PHP < 5.5), je pense qu'il est préférable d'utiliser la notation professeur::class.
Marsh Posté le 25-01-2018 à 16:28:45
Merci pour ta réponse,
mais j'ai besoin de mon constructeur dans d'autres endroits du code autre que les appels à la D.B.
Marsh Posté le 25-01-2018 à 16:32:49
C'est un peu tout le problème du fonctionnement du mode PDO::FETCH_CLASS.
Solutions :
* rendre les paramètres du constructeur facultatifs (avec PDO ils ne seront pas renseignés)
* faire appel aux mutateurs quand c'est toi qui crée un objet
* sinon ne pas utiliser le mode PDO::FETCH_CLASS et instancier toi-même l'objet avec les paramètres qui vont bien
Marsh Posté le 25-01-2018 à 16:42:22
et bien merci pour ta réponse ... je fais la troisième solution et c'est un peu lourd ... je cherchais donc un truc plus automatique
Marsh Posté le 25-01-2018 à 16:56:40
Concrètement tu pourrai m'écrire le code de la première ou deuxième solution ? (j'ai essayé professeur::class ça ne fonctionne pas non plus ... je suis en PHP7)
mutateurs ? j'ai essayé les getters et setters sans succès.
Merci d'avance si tu peux encore m'aider.
Marsh Posté le 26-01-2018 à 15:33:36
Précision : je n'ai rien testé.
Ma proposition n°1 (rendre les paramètres du constructeur facultatifs) :
Code :
|
Ma proposition n°2 (instancier "à la main" une coquille vide pour ensuite appeler les mutateurs) :
Code :
|
Marsh Posté le 26-01-2018 à 16:37:55
Merci beaucoup ... j'étais en train d'utiliser la méthode N°2 avec la coquille vide, ça marche bien.
mais le coup des
$prof->setNom('Barre')->setPrenom('Jean');
je connaissais pas
me sera très utile
---
t'es sûr des "return $this" dans setNom et setPrenom ?
Marsh Posté le 25-01-2018 à 15:38:18
Bonjour à tous,
je vous demande de l'aide, car je n'arrive pas à capter la façon dont je peux récupérer une collection d'objets en PHP à partir d'une D.B.
Sans constructeur dans ma classe 'professeur' tout va bien ; je peux me passer du troisième argument dans "fetchAll" ... il me récupère bien une liste de profs. depuis ma table 'professeur'
Avec le constructeur dans ma classe, il exige ce troisième argument, mais je ne vois pas l'intérêt puisque tous mes objets portent le nom et prénom = "" ...
Donc quoi mettre dans array ? ou bien autre chose à mettre ?
Merci d'avance.