Pour ma part je ne demande jamais au constructeur de réaliser d'accès base.
D'abord pour une question d'utilisation, on n'à pas toujours besoin d'un objet toto qui vas lire en base. Ensuite parceque l'accès base peut planter, et que l'instanciation d'un objet ne devrait à priori pas générer d'erreur, sauf cas *très* particulier.
En gros je le ferais plutot ainsi :
Dinofly, pour ce cas la je la joue autrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class Toto { public function __constrcut(); public static function getTotoById($Id); }
Toujours avec mon Toto,
Je n'ai pas trouver beaucoup mieux avec les fonctions mysql_*.
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 class totos extends ArrayObjet { public static getTotos() { $List = new totos(); $sql = "SELECT id,nom,prenom FROM toto"; $query ect.. while( $res = mysql_fetch_array($query,MYSQL_ASSOC) ) { $a = new toto(); $a->fill( $res ); $totos->append( $a ); } return $totos; } } // ********************************** class toto { public $id; public $nom; public $prenom; public function __construct() { $this->id= NULL; $this->nom = NULL; $this->prenom = NULL; } public static function getTotoById($Id) { $sql = "SELECT id,nom,prenom FROM toto WHERE id=".intval(id); $query.. $res = mysql_fetch_array($query); $this->fill( $res ); } public function fill( $tabValues ) { $this->__construct(); $this->id = $tabValues["id"]; $this->nom = $tabValues["nom"]; $this->prenom = $tabValues["prenom"]; } }
Une alternative serait d'utilier PDO::FETCHCLASS, mais je n'ai pas encore eu le temps de tester.
Et puis je me demande encore comment il fait la liason propriété<->champs de la table.
Ou bien encore un ORM.
D'autres idées ?
bbye
Partager