Monday, February 23, 2026
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

2 COMMENTS

Most Popular

Dominic
32506 POSTS0 COMMENTS
Milvus
131 POSTS0 COMMENTS
Nango Kala
6882 POSTS0 COMMENTS
Nicole Veronica
12005 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12099 POSTS0 COMMENTS
Shaida Kate Naidoo
7011 POSTS0 COMMENTS
Ted Musemwa
7255 POSTS0 COMMENTS
Thapelo Manthata
6967 POSTS0 COMMENTS
Umr Jansen
6956 POSTS0 COMMENTS