Bonjour,

Que pensez vous de ce style de codage de classe métier ? au niveau performance cette methode est elle bonne ? Je suis ouvert a toute vos remarques concernant ce codage.

Pourquoi ces questions ? je me retrouve depuis quelques temps avec des problème de lenteur au niveau de mes applications des qu'il y a une montée en charge des données dans la BDD.

Merci de vos retour

Mic

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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
 
<?php
/// Retourne un tableau de icones
function get_icones()
{
 $bdd = new connectPDO();
 
 $req = "SELECT icones.ico_id FROM icones ";
 $sql = $bdd->connexion->prepare($req);
 $sql->execute();
 $t_object = array();
 while ($res = $sql->fetch(PDO::FETCH_OBJ))
 {
  $t_object[] = new icones($res->ico_id);
 }
 return $t_object;
}
 
/// Gestion des icones
class icones extends connectPDO
{
 protected $id;
 protected $nom;
 protected $image;
 protected $defaut;
 
 ///constructeur
 public function __construct($id=NULL){
  $this->id = $id;
  $this->__load();
 }
 
 /// Charge les élèments en mémoire
 private function __load(){
  if($this->id)
  {
   $this->__connect();
   $req = $this->connexion->prepare("SELECT 
          ico_nom,
          ico_image,
          ico_defaut 
        FROM icones 
        WHERE ico_id=:ico_id
       ");
   $req->bindParam(':ico_id', $this->id);
   $req->execute();
   while ( $res = $req->fetch(PDO::FETCH_OBJ) )
   {
    $this->nom    = $res->ico_nom;
    $this->image   = $res->ico_image;
    $this->defaut   = $res->ico_defaut;
   }
   $this->close();
  }
 }
 
 /// Enregistre les infos dans la bdd
 public function __save(){
  $this->__connect();
  /// modification
  if($this->id)
  {
   $req = $this->connexion->prepare("UPDATE icones SET 
          ico_nom=:ico_nom,
          ico_image=:ico_image,
          ico_defaut =:ico_defaut 
         WHERE ico_id=:ico_id
        ");
   $req->bindParam(':ico_id', $this->id);
  }
  /// insertion
  else
  {
   $req = $this->connexion->prepare("INSERT INTO icones 
         (
          ico_nom,
          ico_image,
          ico_defaut 
         )
         VALUES
         (
          :ico_nom,
          :ico_image,
          :ico_defaut 
         )
        ");
  }
  $req->bindParam(':ico_nom'     , $this->nom);
  $req->bindParam(':ico_image'     , $this->image);
  $req->bindParam(':ico_defaut'     , $this->defaut);
  $req->execute();
  if(! $this->id){ $this->id = $this->connexion->lastInsertId(); }
 }
 
 /// Supprime les infos de la base
 public function __delete(){
  if($this->id)
  {
   $this->__connect();
   $this->connexion->query("DELETE FROM icones WHERE ico_id = ".$this->id);
   $this->close();
  }
 }
 
 /// Retourne : Identifiant de l'icone
 public function getId(){
  return $this->id; 
 }
 /// Retourne : Nom de l'icone
 public function getNom(){
  return $this->nom; 
 }
 /// Permet de définir/modifier : Nom de l'icone
 public function setNom($nom){
 
  $this->nom = $nom;
 }
 
 /// Retourne : Nom de l'image
 public function getImage(){
  return $this->image; 
 }
 /// Permet de définir/modifier : Nom de l'image
 public function setImage($image){
  $this->image = $image;
 }
 
 /// Retourne : Définit si l'icone est selectionné par defaut
 public function getDefaut(){
  return $this->defaut; 
 }
 /// Permet de définir/modifier : Définit si l'icone est selectionné par defaut
 public function setDefaut($defaut){
  $this->defaut = $defaut;
 }
 
}
?>