如何使用变量访问动态属性?

Sta*_*bie 2 php eval properties

看到:

$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;';
    }
}
Run Code Online (Sandbox Code Playgroud)

假设我想将值分配0给所有以类开头的类成员_output.我打算用eval.好主意还是坏主意?

Mic*_*ski 13

你不需要eval()这个.您可以使用变量,如$this->{$key}:

foreach($class_members as $key => $value)
{
    if (strpos($key, '_output') === 0)
    {
        // Look mom, no eval()!
       $this->{$key} = 0;
    }
}
Run Code Online (Sandbox Code Playgroud)


Pee*_*Haa 13

你可以这样做:

$this->{$key} = 0;
Run Code Online (Sandbox Code Playgroud)

只有少数情况eval不予考虑evil.

这不是其中之一:)

  • 我能想到的唯一情况是`// eval("");`:D (5认同)