Bonjour à tous !

Je programmais un truc, lorsque je me suis posé une question au sujet des passages par référence.

Pour résumer ma question, voici un bout de code ultra-simplifié:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
class Objet
{
   private $var3;
 
   public function __construct(&$var2){
      $this->var3 = var2;
   }
 
   public function getVar(){ return $this->var3; }
}
 
$var1 = array('bidon', 'nawak');
$objet = new Objet($var1);
Question #1:
Est-ce qu'à la fin de mon code, je stock 1 (var1) ou 2 (var1 & var3) tableau en mémoire, vu qu'il y a eu le passage par référence ?



Partie 2:

Si je rajoute, à la toute fin, ce code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
unset($var1);
var_dump($objet->getVar());
Question #2:
Est-ce que je vais voir mon tableau avec bidon et nawak ?


Question #3:
Si la réponse à la question 2 était oui; Comment peut-ont faire pour réellement stocker une référence dans un objet instancié ?


Question #4:
À confirmer: si je faisait pas un passage par référence, var2 serait détruite à la fin de l'exécution du constructeur. Donc il y aurais uniquement eu trois tableaux en mémoire au moment de faire l'affectation du contenu de var3.


Merci bien !