Open In App

How to create a copy of an object in PHP?

Last Updated : 01 Dec, 2021
Comments
Improve
Suggest changes
Like Article
Like
Report

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
<?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
<?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 referenced object created by using '=' operator have same value. 
References:https://www.php.net/manual/en/language.oop5.cloning.php


Next Article

Similar Reads