Bonjour,
J'aimerai votre avis sur deux classes A et B. Ces classes correspondent à deux tables de relation 0,n. En fait, ce que j'aimerai savoir c'est si la manière de faire est correcte. Je sais que c'est un peu floue comme question mais je ne sais pas trop comment le dire plus précisément.
J'aurai une seconde interrogation ensuite : comment dans ma classe A intégrer une liste (tableau) d'objet B ? Le mieux est-il de creer une autre classe du style ListeB renvoyant un tableau de B ou de créer un tableau de B directement dans la classe A ? Ou les deux méthodes sont-elles correctes ?
Et si je garde mon code tel quel, dans les deux cas, la dernière ligne de la méthode getB () ne va-t-elle pas donner une boucle infinie ?
Merci d'avance et n'hésitez pas à me faire préciser quoique ce soit.
Voici le code incriminé :
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89 <?php class A { private $connexion; private $idA; private $nomA; private $type; function __construct ($idA = 0) { $this->connexion = new Connexion (); $this->idA = $idA; if (is_numeric ($this->idA) && $this->idA != 0) { $this->getA ($this->idA); } } function __toString () { return "$this->nomA ($this->idA)"; } function toString () { return "$this->nomA ($this->idA) ($this->type)"; } private function getA ($idA) { $tab = $this->connexion->interroge ("SELECT * FROM A WHERE id = $this->idA"); $this->idA = $tab[0]["id"]; $this->nomA = $tab[0]["nom"]; $this->type = $tab[0]["type"]; } // Getter and setter } class B extends A { private $connexion; private $idB; private $nomB; private $min; private $max; function __construct ($idB) { $this->connexion = new Connexion (); $this->idB = $idB; if (is_numeric ($this->idB) && $this->idB != 0) { $this->getB ($this->idB); } } function __toString () { return "$this->nomB ($this->idB)"; } function toString () { return "$this->nomB ($this->idB) ($this->min - $this->max)"; } private function getB ($id) { $tab = $this->connexion->interroge ("SELECT * FROM B WHERE id = $this->idB"); $this->idB = $tab[0]["id"]; $this->nomB = $tab[0]["nom"]; $this->min = $tab[0]["min"]; $this->max = $tab[0]["max"]; parent::__construct ($tab[0]["idA"]); } // Getter and setter } ?>
Partager