Skip to content
Related Articles

Related Articles

Improve Article
How to create a copy of an object in PHP?
  • Last Updated : 30 Apr, 2019

An object copy is created by using the clone keyword (which calls the object’s __clone() method if possible). An object’s __clone() method cannot be called directly. When an object is cloned, PHP will perform a shallow copy of all of the object’s properties. Any properties that are references to other variables will remain references.

Syntax:

$copy_object_name = clone $object_to_be_copied

Program 1: Program to create copy of an object.




<?php
  
// Program to create copy of an object
  
// Creating class
class GFG {
    public $data1;
    public $data2;
    public $data3;
}
  
// Creating object
$obj = new GFG();
  
// Creating clone or copy of object
$copy = clone $obj;
  
// Set values of $obj object
$obj->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";
  
?>
Output:
GeeksforGeeks
Computer science portal

Example 2: Below program distinguishes clone from assignment ( = ) operator.






<?php
  
// Program to create copy of an object
  
// Creating class
class GFG {
    public $data1;
    public $data2;
    public $data3;
      
}
  
// Creating object
$obj = new GFG();
  
// Creating clone or copy of object
$copy = clone $obj;
  
// Creating object without clone keyword
$obj_ref = $obj;
  
// Set values of $obj object
$obj->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";
  
?>
Output:
GeeksforGeeks
Python for Machine learning
GeeksforGeeks

Note: It is clear that cloned object have different values than original object but original and refrenced object created by using ‘=’ operator have same value.

References:https://www.php.net/manual/en/language.oop5.cloning.php




My Personal Notes arrow_drop_up
Recommended Articles
Page :