$ object-> $ attribute和$ object->属性有什么区别?

时间:2016-11-04 18:18:24

标签: php loops oop foreach attributes

有一个foreach循环迭代属性。如果对象具有下一个属性,则代码会为此属性指定值:

foreach ($record as $attribute=>$value) {
    if ($object->has_attribute($attribute)) {
        $object->$attribute = $value;
    }
}

我不明白为什么我们必须使用$object->$attribute代替$object->attribute?后者对我来说似乎更合乎逻辑,因为它看起来像基本的OOP,但在这种情况下,脚本不起作用。

我只想知道原因。请给我一些见解。

2 个答案:

答案 0 :(得分:1)

这是一项名为variable variables的功能:

  

也可以使用变量属性名访问类属性。   变量属性名称将在范围内解析   打电话。例如,如果你有一个表达式   如$foo->$bar,则将检查$bar及其本地范围   value将用作$foo属性的名称。这也是   如果$bar是数组访问,则为true。

答案 1 :(得分:0)

基本上,这是一个动态归因:

$attribute = 'toto'; 
$object->$attribute = 'tata';
echo $object->toto; // will display 'tata'