Bon soir a tous,
J'ai un comportement inattendu que je ne comprend pas. voila mon code :
pour commencer j'ai une classe Test() :
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
16 <?php class Test{ private static $v; public function __construct(){} public function getV(){ return self::$v; } public function setV($value){ self::$v = $value; } } ?>
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
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(); } ?>
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 5 5 5 5 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'.
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
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![]()
Partager