Bon soir a tous,
J'ai un comportement inattendu que je ne comprend pas. voila mon code :

pour commencer j'ai une classe Test() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<?php
class Test{
    private static $v;
 
    public function __construct(){}
 
    public function getV(){
      return self::$v;
    }
 
    public function setV($value){
      self::$v = $value;
    }
}
?>
et un code utilisant cette classe :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?PHP
include('test.php');
$table = array(1,2,3,4,5);
$otable = array();
foreach($table as $value){
  $test = new Test();
  $test->setV($value);
  $otable[]=$test;
}
echo '- la longueur du tableau d objet est de : '.sizeof($otable);
foreach($otable as $obj){
  echo '<br>'.$obj->getV();
}
?>
l'exécution de ce code me donne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
- la longueur du tableau d objet est de : 5
5
5
5
5
5
alors que j'attendais qu'il m'affiche :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
- la longueur du tableau d objet est de : 5
1
2
3
4
5
pour expliquer, le code qui utilise la classe doit instancier pour chaque valeur du tableau '$table' un objet de type 'Test' en introduisant la valeur encoure du tableau dans l'attribut '$v' de l'objet pour enfin enregistrer chaque instance crée dans le tableau d'objet '$otable'. de ce fait je doit a la fin de l'exécution avoir un tableau d'objet de type 'Test' et chaque objet renferme dans son attribut '$v' une valeur du tableau '$table'.

Mais ce que j'ai eu c'est un tableau d'objet de type 'TEST' renfermant chaqun la valeur '5' qui est la dernière valeur enregistrer dans le tableau '$table'.

bon voila j'ai essayer d'être aussi claire que je peut
alors quelqu'un a une idée d'où provient l'erreur?

Merci et bon codage