J'ai une classe avec un membre privé "Description" mais qui propose un setter: J'ai le nom du membre dans une variable. Je voudrais accéder au champ de manière dynamique. Si le champ était simplement public, je pouvais faire: p> mais je ne sais pas comment faire dans le cas où je n'ai qu'un seigteur. p> p>
4 Réponses :
<?php
$bar = "description";
$f = new Foo();
$func="set"+ucwords($bar);
$f->$func("asdf");
?>
Merci beaucoup. C'était en fait simple mais je n'ai pas osé faire ça (je suis habitué à C ++) :)
Utilisez un ensemble magique mais de cette manière que toutes les propriétés privées agiront comme si vous le souhaitez que la description utilise ce p>
Ok, mais pourquoi ne pas les mettre public alors? Désolé, cela pourrait être une question de Newbie.
@Barth pas si fantaisie comme vous le pensez :)
Essayez ceci:
$bar = 'description';
$f = new Foo();
$f->{'set'.ucwords($bar)}('test');
Cette fonction vient faire le travail:
Regardez dans la réflexion;) php.net/manual/fr/reflectionProperty.sevalue.php A> - Modifier, pour ne pouvez-vous pas utiliser
$ f -> {$ bar} = "asdf"; code>?