2010-09-11 4 views
1

Je vous écris un code:pourquoi clones de classe php

class A { 

    private $x = 1; 
    private $y = "z"; 

    public function setX($x){ 
    $this->x = $x; 
    } 

    public function getX(){ 
    return $this->x; 
    } 

} 

$a1 = new A(); 

$a1->setX(2); 

echo $a1->getX(); 

$a2 = $a1; 

$a2->setX(666); 

echo $a1->getX(); 

J'ai sortie:

2 

666 

Mais je mis en valeur "666" seulement pour objet a2 $.

Pourquoi la valeur en $ a1 a elle aussi changé?

(OS: Ubuntu 10.04, PHP 5.3.2-1)

Répondre

0
$a2 = new A(); 

Vous devez créer un nouvel objet de la classe.

1

Les objets sont transmis par référence contrairement aux tableaux passés par valeur. C'est le comportement préféré dans les langages oop et il est beaucoup plus flexible que de tout copier dès qu'il est réassigné à une autre variable. La copie peut être effectuée manuellement si vous le souhaitez.