- <?php 
-   
- class my_class 
- { 
-     public $var1; 
-   
-     public $var2; 
-   
-     public $var3; 
-   
- 	private $data; 
-   
- 	public function __construct() 
- 	{ 
- 	    $this->data = new stdClass; 
- 	    $this->data->var1 = 'a'; 
- 	    $this->data->var2 = 'b'; 
- 	    $this->data->var3 = 'c'; 
- 	    $this->assignReferences(); 
- 	} 
-   
- 	public function makeClone() 
- 	{ 
- 	    unset($this->var1);  // turns $this->data->var1 into non-reference 
- 	    unset($this->var2);  // turns $this->data->var2 into non-reference 
- 	    unset($this->var3);  // turns $this->data->var3 into non-reference 
-   
- 	    $clone = clone $this;               // this code is the same 
- 	    $clone->data = clone $clone->data;  // as what would go into 
- 	    $clone->assignReferences();         // __clone() normally 
-   
- 	    $this->assignReferences(); // undo the unset()s 
- 	    return $clone; 
- 	} 
-   
- 	private function assignReferences() 
- 	{ 
- 	    $this->var1 = &$this->data->var1; 
- 	    $this->var2 = &$this->data->var2; 
- 	    $this->var3 = &$this->data->var3;         
- 	} 
- } 
-   
- $original = new my_class; 
- $new = $original->makeClone(); 
- $new->var3 = 'd';  
-   
- echo $original->var3; // Output Should Be "c" 
				PD9waHAKCmNsYXNzIG15X2NsYXNzCnsKICAgIHB1YmxpYyAkdmFyMTsKCiAgICBwdWJsaWMgJHZhcjI7CgogICAgcHVibGljICR2YXIzOwoKCXByaXZhdGUgJGRhdGE7CgkKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCgl7CgkgICAgJHRoaXMtPmRhdGEgPSBuZXcgc3RkQ2xhc3M7CgkgICAgJHRoaXMtPmRhdGEtPnZhcjEgPSAnYSc7CgkgICAgJHRoaXMtPmRhdGEtPnZhcjIgPSAnYic7CgkgICAgJHRoaXMtPmRhdGEtPnZhcjMgPSAnYyc7CgkgICAgJHRoaXMtPmFzc2lnblJlZmVyZW5jZXMoKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIG1ha2VDbG9uZSgpCgl7CgkgICAgdW5zZXQoJHRoaXMtPnZhcjEpOyAgLy8gdHVybnMgJHRoaXMtPmRhdGEtPnZhcjEgaW50byBub24tcmVmZXJlbmNlCgkgICAgdW5zZXQoJHRoaXMtPnZhcjIpOyAgLy8gdHVybnMgJHRoaXMtPmRhdGEtPnZhcjIgaW50byBub24tcmVmZXJlbmNlCgkgICAgdW5zZXQoJHRoaXMtPnZhcjMpOyAgLy8gdHVybnMgJHRoaXMtPmRhdGEtPnZhcjMgaW50byBub24tcmVmZXJlbmNlCgkKCSAgICAkY2xvbmUgPSBjbG9uZSAkdGhpczsgICAgICAgICAgICAgICAvLyB0aGlzIGNvZGUgaXMgdGhlIHNhbWUKCSAgICAkY2xvbmUtPmRhdGEgPSBjbG9uZSAkY2xvbmUtPmRhdGE7ICAvLyBhcyB3aGF0IHdvdWxkIGdvIGludG8KCSAgICAkY2xvbmUtPmFzc2lnblJlZmVyZW5jZXMoKTsgICAgICAgICAvLyBfX2Nsb25lKCkgbm9ybWFsbHkKCQoJICAgICR0aGlzLT5hc3NpZ25SZWZlcmVuY2VzKCk7IC8vIHVuZG8gdGhlIHVuc2V0KClzCgkgICAgcmV0dXJuICRjbG9uZTsKCX0KCQoJcHJpdmF0ZSBmdW5jdGlvbiBhc3NpZ25SZWZlcmVuY2VzKCkKCXsKCSAgICAkdGhpcy0+dmFyMSA9ICYkdGhpcy0+ZGF0YS0+dmFyMTsKCSAgICAkdGhpcy0+dmFyMiA9ICYkdGhpcy0+ZGF0YS0+dmFyMjsKCSAgICAkdGhpcy0+dmFyMyA9ICYkdGhpcy0+ZGF0YS0+dmFyMzsgICAgICAgIAoJfQp9Cgokb3JpZ2luYWwgPSBuZXcgbXlfY2xhc3M7CiRuZXcgPSAkb3JpZ2luYWwtPm1ha2VDbG9uZSgpOwokbmV3LT52YXIzID0gJ2QnOyAKCmVjaG8gJG9yaWdpbmFsLT52YXIzOyAvLyBPdXRwdXQgU2hvdWxkIEJlICJjIg==