dynamique des propriétés de la classe $$valeur en php
Comment puis-je référence à une propriété de classe en sachant que l'une chaîne de caractères?
class Foo
{
public $bar;
public function TestFoobar()
{
$this->foobar('bar');
}
public function foobar($string)
{
echo $this->$$string; //doesn't work
}
}
quelle est la façon correcte d'eval de la chaîne?
Vous devez vous connecter pour publier un commentaire.
Vous avez seulement besoin d'utiliser un $ lorsque le référencement d'un objet membre de la variable à l'aide d'une variable de chaîne.
Si vous souhaitez utiliser la valeur d'une propriété pour obtenir le nom d'une propriété, vous devez utiliser "{" entre parenthèses:
Même si elles sont des objets, ils travaillent:
$this->{"my_prop_".$i}
Comme les autres l'ont mentionné, $this->$string devrait faire l'affaire.
Cependant, cette
sera réellement évaluer chaîne, et d'évaluer à nouveau le résultat.
vous étiez très proche. vous venez d'ajouter 1 extra signe$.
Vous avez seulement besoin
$$string
lors de l'accès à une variable locale ayant que son nom stocké dans une chaîne. Car, normalement, dans une classe d'accès comme$obj->property
, vous avez seulement besoin d'ajouter un$
.Pour se souvenir de la syntaxe exacte, tenir à l'esprit que vous utilisez un
$
plus que ce que vous utilisez normalement. Comme vous utilisez$object->property
pour accéder à une propriété de l'objet, puis la dynamique d'accès se fait avec$object->$property_name
.