title besides title

 

Friday, November 30, 2012

PHP : Classes & Objects - [7.5] Cloning Objects


7.5.1 Problem

You want to make a copy of an existing object. For instance, you have an object containing a message posting and you want to copy it as the basis for a reply message.

7.5.2 Solution

Use = to assign the object to a new variable:
$rabbit = new rabbit;
$rabbit->eat();
$rabbit->hop();
$baby = $rabbit;

7.5.3 Discussion

In PHP, all that's needed to make a copy of an object is to assign it to a new variable. From then on, each instance of the object has an independent life and modifying one has no effect upon the other:
class person {
    var $name;

    function person ($name) {
        $this->name = $name;
    }
}

$adam = new person('adam');
print $adam->name;    // adam
$dave = $adam;
$dave->name = 'dave';
print $dave->name;    // dave
print $adam->name;    // still adam
Zend Engine 2 allows explicit object cloning via a _ _clone( ) method that is called whenever an object is copied. This provides more finely-grained control over exactly which properties are duplicated.