Bonjours à tous
j'essaie de construire une méthodeget () via un paramètre entré par l'utilisateur, ie
j'ai un 'objet inventeur qui a plusieurs propriétés comme nom prénom âgé, et à chaque fois pour récupérer une propriété on fait
$inventeur->getNomInventeur()
$inventeur->getPrenomInventeur()
$inventeur->getAgeInventeur()
alors dans mon cas je veux laisser l'utilisateur choisir ce qu'il veut afficher
Donc l'appelle sera :display content(string $property)
$get="get".$property."()";
$inventeur->$get()
Mais ça ne marche pasdisplay content("NomInventeur");
Voilà le code
et lorsque j'écris
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 public function displayContent(string $property){ $result = $this->pdo->prepare($query); $result->execute(); $inventeurs = $result->fetchAll(PDO::FETCH_CLASS, Inventeur::class); $get = "get" . $property . "()"; // va donner par exemple getNom_inventeur() foreach ($inventeurs as $inventeur) { echo $inventeur->$get; //Undefined property: App\Model\Inventeur::$getNom_inventeur() //echo $inventeur->{$get}; //Même erreur //echo $inventeur->{'getNom_inventeur'}; //Même erreur //echo $inventeur->getNom_inventeur() //Marche bien } }
m'affiche bien un résultat
Code : Sélectionner tout - Visualiser dans une fenêtre à part $inventeur->getNom_inventeur()
mais lorsque je concatène la propriété pour construire la methode getProperty() j'ai cette erreur
dans la class Inventeur j'ai cette méthodeUndefined property: App\Model\Inventeur::$getNom_inventeur()
Merci en avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 /** * Get the value of nom_inventeur */ public function getNom_inventeur(): string { if ($this->nom_inventeur != null) { return $this->nom_inventeur; } else { return "---"; } }
Partager