如何在PHP创建对象的副本?
对象副本是通过使用clone关键字创建的(如果可能,它会调用对象的 __clone() 方法)。不能直接调用对象的 __clone() 方法。当对象被克隆时, PHP将执行对象所有属性的浅拷贝。任何引用其他变量的属性都将保持引用。
句法:
$copy_object_name = clone $object_to_be_copied
程序 1:创建对象副本的程序。
data1 = "Geeks";
$obj->data2 = "for";
$obj->data3 = "Geeks";
// Set values of copied object
$copy->data1 = "Computer ";
$copy->data2 = "science ";
$copy->data3 = "portal";
// Print values of $obj object
echo "$obj->data1$obj->data2$obj->data3\n";
// Print values of $copy object
echo "$copy->data1$copy->data2$copy->data3\n";
?>
输出:
GeeksforGeeks
Computer science portal
示例 2:下面的程序将 clone 与赋值 (=)运算符区分开来。
data1 = "Geeks";
$obj->data2 = "for";
$obj->data3 = "Geeks";
// Set values of copied object
$copy->data1 = "Python ";
$copy->data2 = "for ";
$copy->data3 = "Machine learning";
// Print values of $obj object
echo "$obj->data1$obj->data2$obj->data3\n";
// Print values of $copy object
echo "$copy->data1$copy->data2$copy->data3\n";
// Print values of without clone object
echo "$obj_ref->data1$obj_ref->data2$obj_ref->data3\n";
?>
输出:
GeeksforGeeks
Python for Machine learning
GeeksforGeeks
注意:很明显,克隆对象与原始对象具有不同的值,但使用“=”运算符创建的原始对象和引用对象具有相同的值。
参考资料: https://www. PHP.net/manual/en/language.oop5.cloning。 PHP