Как получить доступ к динамическому свойству с помощью переменной? - PullRequest
2 голосов
/ 15 ноября 2011

См .:

$class_members = get_class_vars(__CLASS__);

foreach($class_members as $key => $value)
{
    if (strpos($key, '_output') === 0)
    {
        // I want to eval() this
        $code = '$this->' . $key . ' = 0;';
    }
}

Предположим, я хочу присвоить значение 0 всем членам класса, которые начинаются с _output.Я планирую использовать eval. Хорошая или плохая идея?

Ответы [ 2 ]

14 голосов
/ 15 ноября 2011

Вам не нужно eval() для этого.Вы можете использовать переменную как в $this->{$key}:

foreach($class_members as $key => $value)
{
    if (strpos($key, '_output') === 0)
    {
        // Look mom, no eval()!
       $this->{$key} = 0;
    }
}
13 голосов
/ 15 ноября 2011

Вы можете просто сделать:

$this->{$key} = 0;

Лишь в нескольких ситуациях eval не считается evil.

И это не один из них:)

...