2010-12-27 10 views

Antwort

3

Wenn Sie es einfach zuweisen, wie:

$obj2 = $obj; 

dann kopieren Sie nicht das Objekt. Sie kopieren die Referenz auf das Objekt. Somit zeigen $obj2 und $obj auf dasselbe Objekt.

auch Objects and references

Beispiel Siehe:

class A { 
    public $foo = 'bar'; 
} 

$obj = new A(); 
$obj2 = $obj; 

$obj2->foo = 'foo too'; 

echo $obj->foo . PHP_EOL; 

$obj = new A(); 
$obj2 = clone($obj); 

$obj2->foo = 'foo too'; 

echo $obj->foo . PHP_EOL; 

druckt

foo too 
bar 

DEMO

+0

Gr8 Antwort ...... danke –

+1

zu viele Tastenanschläge, um 'groß' in voller Größe einzugeben? Ich hoffe du nennst deine Variablen nicht so ... – Robert

0

Neben Felix Kling Antwort, Klon mit ermöglicht die Verwendung von __cl eine() magische Methode.

class Obj{ 
    public $cloned = 0; 
    public function __clone(){ 
     $this->cloned++; 
    } 
} 

$obj1 = new Obj(); 
$obj2 = $obj1; 
echo 'Times cloned: ' . $obj2->cloned; // returns 'Times cloned: 0' 
var_dump($obj2 === $obj1); // true 

$obj3 = clone $obj1; 
echo 'Times cloned: ' . $obj3->cloned; // returns 'Times cloned: 1' 
var_dump($obj3 === $obj1); // false 
Verwandte Themen