文档「设计模式全集」-原型模式中有个疑问
原型模式小节的示例代码:
......
$fooPrototype = new FooBookPrototype();
for ($i = 0; $i < 10; $i++) {
$book = clone $fooPrototype;
$book->setTitle('Foo Book No ' . $i);
$this->assertInstanceOf(FooBookPrototype::class, $book);
}
......
疑问:
在循环中「clone」对象实例变量和不使用「clone」关键字直接赋值使用这个对象实例变量的区别是什么呢?
看文档中对「clone」关键字的解释
当对象被复制后,PHP 5 会对对象的所有属性执行一个浅复制(shallow copy)。所有的引用属性仍然会是一个指向原来的变量的引用。
理解下来的意思,因为「clone」是浅拷贝对象,所以在循环中使用会更节省开销?
推荐文章: