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

时间:2011-11-15 14:06:18

标签: php properties eval

请参阅:

$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 个答案:

答案 0 :(得分:14)

您不需要eval()。您可以使用$this->{$key}中的变量:

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

答案 1 :(得分:13)

你可以这样做:

$this->{$key} = 0;

只有少数情况eval不被视为evil

这不是其中之一:)