clone()

Aus php bar

(Weitergeleitet von Clone())
Wechseln zu: Navigation, Suche

__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:

 class Foo
 {
     private $a;
     protected $b;
     public $c;
 
     public function __construct($a, $b, $c)
     {
         $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


Persönliche Werkzeuge