public static function instantiation($row){
>>> $users = new self;
foreach ($row as $the_attribute => $value) {
if($users ->has_the_attribute($the_attribute)){
$users ->{$the_attribute} = $value;
}
}
return users;
}
private function has_the_attribute($the_attribute){
$object_properties = get_object_vars($this);
$array_result = array_key_exists($the_attribute, $object_properties);
return $array_result;
}
我可以知道为什么我要在这里创建一个对象来调用has_the_attribute()
函数吗?如果我使用$this->has_the_attribute
和$this->$the_attribute
代替$users->$the_attribute
,会出现什么问题?
答案 0 :(得分:1)
当迭代$result
时,你得到了属性名/属性值对,所以$the_db_attribute
是包含当前属性名的变量。
在$the_object -> $the_db_attribute = $value;
中,我们猜测$the_object
具有属性名称属性
因此,如果当前$the_db_attribute
是"the_first_attribute"
,那么您的令人费解的行等同于$the_object -> the_first_attribute = $value;
,现在根本不会令人费解:)
答案 1 :(得分:0)
它正在分配一个名称为$the_db_attribute
的属性,并将其值设置为$value
。因此,如果$the_db_attribute = "foo"
,则相当于
$the_object->foo = $value;
所以这样做是使用$result
数组中的相应元素填充对象中的属性。