有一个迭代属性的foreach
循环。如果对象具有next属性,则代码将为该属性分配一个值:
foreach ($record as $attribute=>$value) {
if ($object->has_attribute($attribute)) {
$object->$attribute = $value;
}
}
我不明白为什么我们必须用$object->$attribute
而不是$object->attribute
?对我来说,后者似乎更符合逻辑,因为它看起来像基本的OOP,但在这种情况下,脚本不起作用。
我只是想知道为什么。
这是一个叫做可变变量的特性:
类属性也可以使用变量属性名访问。变量属性名将在from的作用域内解析电话就打了。例如,如果您有这样一个表达式如
$foo->$bar
,则检查$bar
及其局部作用域value将用作$foo
的属性名。这也是如果$bar
是数组访问,则为true。
基本上,这是一个动态属性:
$attribute = 'toto';
$object->$attribute = 'tata';
echo $object->toto; // will display 'tata'