php深复制、浅复制

class SubTest {
    public $num = 100;
}

class Test {
    public $child;

    function __construct($child){
        $this->child = $child;
    }
}

$a = new Test(new SubTest());
// 这里进行浅拷贝
$b = clone $a;
$b->child->num = 200;

// 以下输出均是 200
echo $a->child->num, "\n";
echo $b->child->num, "\n";

class Test2 {
    public $child;

    function __construct($child){
        $this->child = $child;
    }

    // clone 完成时,此方法会被调用,在此完成深拷贝动作
    function __clone() {
        $this->child = clone $this->child;
    }
}

$a = new Test2(new SubTest());
// 这里进行深拷贝
$b = clone $a;
$b->child->num = 200;

// 以下输出是 100, 200
echo $a->child->num, "\n";
echo $b->child->num, "\n";


nba2k2球员数据
请先登录后发表评论
  • 最新评论
  • 总共0条评论