PHP:动态对象名称

Jon*_*tad 6 php generics scalar dynamic object

可能重复:
按字符串获取PHP类属性

这是我的原始代码:

function generateQuery($type, $language, $options)
{
    // Base type
    $query = $this->Queryparts->print['filter'];

    // Language modifiers
    // Additional options

    return $query;
}
Run Code Online (Sandbox Code Playgroud)

"print"是定义为对象的数组/散列(具有"(对象)"转换).我希望做这样的事情:

    $query = $this->Queryparts->$type['filter'];
Run Code Online (Sandbox Code Playgroud)

使用$ type变量作为对象名称.这可能吗?

som*_*som 11

$query = $this->Queryparts->{$type}['filter'];
Run Code Online (Sandbox Code Playgroud)


Cor*_*bin 10

您可以使用中间变量:

$name = 'something';
$object->$name;
Run Code Online (Sandbox Code Playgroud)

或者你可以使用大括号:

$a = array('foo' => 'bar');
$object->{$a['foo']}; //equivalent to $object->bar
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,如果你发现自己经常这样做,可能会有设计问题.)