Friday, October 24, 2025
HomeLanguagesHow to create a copy of an object in PHP?

How to create a copy of an object in PHP?

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: 

neveropen
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: 

neveropen
Python for Machine learning
neveropen

 

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

RELATED ARTICLES

Most Popular

Dominic
32361 POSTS0 COMMENTS
Milvus
88 POSTS0 COMMENTS
Nango Kala
6728 POSTS0 COMMENTS
Nicole Veronica
11892 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11954 POSTS0 COMMENTS
Shaida Kate Naidoo
6852 POSTS0 COMMENTS
Ted Musemwa
7113 POSTS0 COMMENTS
Thapelo Manthata
6805 POSTS0 COMMENTS
Umr Jansen
6801 POSTS0 COMMENTS