Подтвердить что ты не робот

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

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

class Foo
{
    public $bar;

    public function TestFoobar()
    {
        $this->foobar('bar');
    }

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

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

4b9b3361

Ответ 1

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

echo $this->$string;

Ответ 2

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

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

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

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

Ответ 3

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

Однако этот

$this->$$string;

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

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

Ответ 4

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

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

Ответ 5

echo $this->$string; //should work

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

Ответ 6

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