我正在看OOP Basics并看到这样的代码(简化了一下)
你可以看到这个类和输出
class Test{}
$a = new Test();
$b = new $a;
var_dump($b == $a); // true
Run Code Online (Sandbox Code Playgroud)
我不明白的是,$b = new $a但$a已经是一个对象,那么这个/为什么这个有用呢?如果我做vardump $a输出是:
object(Test)#1 (0) {
}
Run Code Online (Sandbox Code Playgroud)
那么,该变量如何与new关键字一起使用.我以为我们只能使用new已经定义的类,或者使用指向类ex的字符串:
$var = 'Test';
new $var; // ok
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,$var是一个字符串,而不是另一个对象.
它是创建新对象的快捷方式。在 PHP 5.3.0 之前你必须这样做:
$class = get_class($instance);
$newInstance = new $class;
Run Code Online (Sandbox Code Playgroud)
从 PHP 5.3.0 开始,您可以使用以下命令执行相同的操作:
$newInstance = new $instance;
Run Code Online (Sandbox Code Playgroud)
我认为非常有用,因为它消除了对临时变量的需要。
澄清一下,这会创建新对象。它不是克隆。换句话说,__construct()将被调用而不是__clone().
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |