свойство динамического класса $$ значение в php

Как я могу ссылаться на свойство класса, зная только строку?

class Foo { public $bar; public function TestFoobar() { $this->foobar('bar'); } public function foobar($string) { echo $this->$$string; //doesn't work } } 

Каков правильный способ оценки строки?

Вам нужно всего лишь использовать один $ при ссылке на переменную-член объекта с помощью строковой переменной.

 echo $this->$string; 

Если вы хотите использовать значение свойства для получения имени свойства, вам нужно использовать «{» скобки:

 $this->{$this->myvar} = $value; 

Даже если это объекты, они работают:

 $this->{$this->myobjname}->somemethod(); 

Как уже отмечали другие, $ this -> $ string должен делать трюк.

Однако это

 $this->$$string; 

будет фактически оценивать строку и снова оценивать результат этого.

 $foo = 'bar'; $bar = 'foobar'; echo $$foo; //-> $'bar' -> 'foobar' 

вы были очень близки. вы просто добавили 1 дополнительный знак $.

 public function foobar($string) { echo $this->$string; //will work } 
 echo $this->$string; //should work 

Вам нужна $$string при доступе к локальной переменной, имеющей только ее имя, хранящееся в строке. Поскольку обычно в классе вы получаете доступ к нему как $obj->property , вам нужно добавить только один $ .

Чтобы помнить точный синтаксис, учтите, что вы используете $ больше, чем обычно используете. Поскольку вы используете $object->property для доступа к свойству объекта, динамический доступ выполняется с помощью $object->$property_name .