<?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 __clone()
{
$this->assignReferences();
}
private function assignReferences()
{
$this->var1 = &$this->data->var1;
$this->var2 = &$this->data->var2;
$this->var3 = &$this->data->var3;
}
}
$original = new my_class;
$new = clone $original;
$new->var3 = 'd';
echo $original->var3; // Output Should Be "c"
PD9waHAKCmNsYXNzIG15X2NsYXNzCnsKICAgIHB1YmxpYyAkdmFyMTsKCiAgICBwdWJsaWMgJHZhcjI7CgogICAgcHVibGljICR2YXIzOwoKCXByaXZhdGUgJGRhdGE7CgkKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCgl7CgkgICAgJHRoaXMtPmRhdGEgPSBuZXcgc3RkQ2xhc3M7CgkgICAgJHRoaXMtPmRhdGEtPnZhcjEgPSAnYSc7CgkgICAgJHRoaXMtPmRhdGEtPnZhcjIgPSAnYic7CgkgICAgJHRoaXMtPmRhdGEtPnZhcjMgPSAnYyc7CgkgICAgJHRoaXMtPmFzc2lnblJlZmVyZW5jZXMoKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKQoJewoJICAgICR0aGlzLT5kYXRhID0ganNvbl9kZWNvZGUoanNvbl9lbmNvZGUoJHRoaXMtPmRhdGEpKTsKCSAgICAkdGhpcy0+YXNzaWduUmVmZXJlbmNlcygpOwoJfQoJCglwcml2YXRlIGZ1bmN0aW9uIGFzc2lnblJlZmVyZW5jZXMoKQoJewoJICAgICR0aGlzLT52YXIxID0gJiR0aGlzLT5kYXRhLT52YXIxOwoJICAgICR0aGlzLT52YXIyID0gJiR0aGlzLT5kYXRhLT52YXIyOwoJICAgICR0aGlzLT52YXIzID0gJiR0aGlzLT5kYXRhLT52YXIzOyAgICAgICAgCgl9Cn0KCiRvcmlnaW5hbCA9IG5ldyBteV9jbGFzczsKJG5ldyA9IGNsb25lICRvcmlnaW5hbDsKJG5ldy0+dmFyMyA9ICdkJzsgCgplY2hvICRvcmlnaW5hbC0+dmFyMzsgLy8gT3V0cHV0IFNob3VsZCBCZSAiYyI=