PHP Magic Methods __clone()


__clone is invoked by use of the clone keyword. It is used to manipulate object state upon cloning, after the object has been actually cloned.

class CloneableUser
    public $name;
    public $lastName;

     * This method will be invoked by a clone operator and will prepend "Copy " to the
     * name and lastName properties.
    public function __clone()
        $this->name = "Copy " . $this->name;
        $this->lastName = "Copy " . $this->lastName;


$user1 = new CloneableUser();
$user1->name = "John";
$user1->lastName = "Doe";

$user2 = clone $user1; // triggers the __clone magic method

echo $user2->name;     // Copy John
echo $user2->lastName; // Copy Doe