如何重新创建已经创建的对象(参见示例)

时间:2017-01-13 16:21:13

标签: php oop

我正在查看OOP Basics并看到这样的代码(简化了一下)

您可以看到此类和输出

class Test{}

$a  = new Test();
$b = new $a;

var_dump($b == $a); // true

我不明白的是$b = new $a,但$a已经是一个对象,那么这是如何/为什么有效呢?如果我做vardump $a,则输出为:

object(Test)#1 (0) {
}

那么,该变量如何与new关键字一起使用。我认为我们只能将new与已经定义的类一起使用,或者使用指向类ex的字符串:

$var = 'Test'; 
new $var; // ok 

但在这种情况下,$var是一个字符串,而不是另一个对象。

1 个答案:

答案 0 :(得分:1)

这是创建新对象的快捷方式。在PHP 5.3.0之前,你必须这样做:

$class = get_class($instance);
$newInstance = new $class;

从PHP 5.3.0开始,您可以对此做同样的事情:

$newInstance = new $instance;

在我看来非常有用,因为它不需要临时变量。

为了澄清,这会创建新对象。 这不是克隆。 换句话说,将调用__construct()而不是__clone()