clone()
Aus php bar
__clone() wird automatisch durch PHP aufgerufen wenn durch das Schlüsselwort clone eine Kopie eines Objekts erstellt wird.
Beim Klonen werden Unterobjekte nicht mitgeklont sondern als Referenzen übernommen. Wenn man dies nicht möchte oder bestimmte Eigenschaften beim Klonen auf einen Ausgangswert setzen will kann man dafür, in seiner Klasse, die spezielle Methode __clone definieren. Diese wird automatisch nach dem Klonen ausgeführt. In dieser Methode kann man dann die nötigen Operationen ausführen um den Rest des Trennvorgangs abzuschließen.
Beispiel:
1 class Foo 2 { 3 private $a; 4 protected $b; 5 public $c; 6 7 public function __construct($a, $b, $c) 8 { 9 $this->a = $a; 10 $this->b = $b; 11 $this->c = $c; 12 } 13 14 public function __clone() 15 { 16 // $a der Kopie wird 0 17 $this->a = 0; 18 19 20 // $b behält seinen Wert; falls $b ein Objekt ist, ist es eine Referenz auf das ursprüngliche Objekt 21 22 // $c der Kopie wird ein Klon des Objektes in $c der Vorlage 23 $this->c = clone $this->c; 24 } 25 } 26 27 $mein_objekt = new Foo; 28 29 // kopiert $mein_objekt und ruft dann $mein_klon->__clone() auf 30 $mein_klon = clone $mein_objekt;
siehe auch: clone