为什么在类中创建对象会调用另一个函数而不是$ this?

时间:2016-08-27 13:11:27

标签: php foreach

    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,会出现什么问题?

2 个答案:

答案 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数组中的相应元素填充对象中的属性。