Skip to content

Instantly share code, notes, and snippets.

@mpmont
Created October 6, 2012 22:07
Show Gist options
  • Save mpmont/3846327 to your computer and use it in GitHub Desktop.
Save mpmont/3846327 to your computer and use it in GitHub Desktop.
__clone() method
<?php
class SubObject
{
static $instances = 0;
public $instance;
public function __construct() {
$this->instance = ++self::$instances;
}
public function __clone() {
$this->instance = ++self::$instances;
}
}
class MyCloneable
{
public $object1;
public $object2;
function __clone()
{
// Force a copy of this->object, otherwise
// it will point to same object.
$this->object1 = clone $this->object1;
}
}
$obj = new MyCloneable();
$obj->object1 = new SubObject();
$obj->object2 = new SubObject();
$obj2 = clone $obj;
print("Original Object:\n");
print_r($obj);
print("Cloned Object:\n");
print_r($obj2);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment