PHP将所有对象属性复制到此

ari*_*rik 17 php properties this assign

我有一个PHP类型的对象MyObject.

$myObject instanceof MyObject
Run Code Online (Sandbox Code Playgroud)

现在,在class MyObject,有一个非静态函数,在那里,我使用"我"的引用$this,但我也有另一个对象.

是否有可能在不做的情况下$this = $myObject实现或多或少相同的效果,比如某种类似的东西set_object_vars($this, get_object_vars($myObject))

Geo*_*let 52

<?php

class MyObject
{
    public function import(MyObject $object)
    {   
        foreach (get_object_vars($object) as $key => $value) {
            $this->$key = $value;
        }
    }   
}
Run Code Online (Sandbox Code Playgroud)

会做你想做的我想,但你应该知道以下内容:

  1. get_object_vars 只会找到非静态属性
  2. get_object_vars只会根据范围找到可访问的属性

根据范围的部分是非常重要的,可能值得多一点的解释.您是否知道属性范围依赖而不是PHP中的实例依赖

这意味着在上面的例子中,如果你有一个private $bar属性MyObject,get_object_vars会看到它,因为你在一个MyObject类的实例中.如果您尝试导入另一个类的实例,这显然不起作用.