Salut,
Je ne suis pas sûr d'avoir bien compris ce que tu voulais faire, mais ça ressemblerait peut-être à quelque chose comme ça :
public function add(Field $field)
{
// On récupère le nom du champ.
$attr = $field->name();
$field->setValue($this->entity->$attr()); // On assigne la valeur correspondante au champ.
// On récupère le choix
$choix = $field->choix;
$field->setChoix($this->entity->$choix); // je suis pas sûr de la valeur entre parenthèses je ne vois pas ton code en entier
$this->fields] = $field; // On ajoute le champ passé en argument à la liste des champs.
return $this;
// On récupère le nom du champ.
}
// Et donc sur le même modèle que la fonction setValue, il te faut une fonction setChoix
public function setChoix($args) {
// et là je sais pas ce que tu comptes faire avec
}
Après je ne sais pas comment fonctionne ta fonction setValue(), peut-être qu'elle peut gérer elle même si l'attribut à ajouter est un name, un choix au autre chose.
J'espère que ça t'éclairera ;)
PS : quand tu accèdes à une propriété qui n'est pas une méthode d'un objet, inutile de mettre des parenthèses, tu peux écrire $object->property pour les propriétés et $object->method() pour les méthodes.