Dev Faq
6
votes

PHP: Comment utiliser le nom de variable dynamique avec un ensemble de classe '

J'ai une classe avec un membre privé "Description" mais qui propose un setter: xxx

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: xxx

mais je ne sais pas comment faire dans le cas où je n'ai qu'un seigteur.

php dynamic-variables

1 commentaires

Regardez dans la réflexion;) php.net/manual/fr/reflectionProperty.sevalue.php - Modifier, pour ne pouvez-vous pas utiliser $ f -> {$ bar} = "asdf"; ?


4 Réponses :


10
votes
<?php
$bar = "description";
$f = new Foo();
$func="set"+ucwords($bar);
$f->$func("asdf");
?>

1 commentaires

Merci beaucoup. C'était en fait simple mais je n'ai pas osé faire ça (je suis habitué à C ++) :)



0
votes

Utilisez un ensemble magique xxx

mais de cette manière que toutes les propriétés privées agiront comme si vous le souhaitez que la description utilise ce xxx


2 commentaires

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 :)



4
votes

Essayez ceci:

$bar = 'description';
$f = new Foo();
$f->{'set'.ucwords($bar)}('test');


0 commentaires

0
votes

Cette fonction vient faire le travail: xxx


0 commentaires

Articles qui pourrait vous intéresser :

Pourquoi est-ce que j'obtiens une erreur laravel lors de la création d'un nouveau projet?
Select2 ne s'affiche pas correctement dans le mode bootstrap
Laravel Echo n'écoute pas
La validation de la demande de formulaire ne fonctionne pas. Il charge juste la page d'accueil dans Postman
© 2020 www.devfaq.fr - Licensed under  cc by-sa 3.0  with  attribution required.