Complex classes like GestionModule often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use GestionModule, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
5 | class GestionModule { |
||
6 | private $id_module; |
||
7 | private $url; |
||
8 | private $nom; |
||
9 | private $version; |
||
10 | private $online_version; |
||
11 | private $icone; |
||
12 | private $url_telechargement; |
||
13 | |||
14 | |||
15 | //-------------------------- CONSTRUCTEUR ----------------------------------------------------------------------------// |
||
16 | //-------------------------- FIN CONSTRUCTEUR ----------------------------------------------------------------------------// |
||
17 | |||
18 | |||
19 | //-------------------------- GETTER ----------------------------------------------------------------------------// |
||
20 | public function getIdModule() { |
||
41 | |||
42 | /** |
||
43 | * récupere la liste des modules activé utilisé pour toutes les pages |
||
44 | */ |
||
45 | public function getListeModuleActiver() { |
||
68 | |||
69 | /** |
||
70 | * @param null $systeme |
||
71 | * recupere la listes des modules ajouter par un autre admin |
||
72 | * fonction utilisée uniquement dans la config |
||
73 | */ |
||
74 | public function getListeModule($systeme = 0) { |
||
97 | |||
98 | /** |
||
99 | * @param $nom_module |
||
100 | * @return bool |
||
101 | * permets de savoir si un module est installé ou non |
||
102 | */ |
||
103 | public static function getModuleInstaller($nom_module) { |
||
118 | |||
119 | /** |
||
120 | * @param $nom_module |
||
121 | * @return boolean|null |
||
122 | * return true si le module est activer sinon false |
||
123 | */ |
||
124 | public static function getModuleActiver($nom_module) { |
||
140 | |||
141 | /** |
||
142 | * @param $nom_module |
||
143 | * @return boolean|null |
||
144 | * fonction qui permet de savoir si un module est à jour ou non |
||
145 | * si a jour renvoi true sinon renvoi false |
||
146 | */ |
||
147 | public static function getModuleAJour($nom_module) { |
||
158 | |||
159 | /** |
||
160 | * fonction qui se lance à chaquer fois que l'on ouvre l'admin |
||
161 | * permet de tester si tous les modules présent sur le site sont bien à jour |
||
162 | */ |
||
163 | public function getCheckModuleVersion() { |
||
232 | |||
233 | public function getListeModuleMettreJour() { |
||
254 | //-------------------------- FIN GETTER ----------------------------------------------------------------------------// |
||
255 | |||
256 | |||
257 | //-------------------------- SETTER ----------------------------------------------------------------------------// |
||
258 | private function setListeModuleActiver($id_module, $url, $version, $nom, $icone = null, $url_telechargement = null) { |
||
266 | |||
267 | private function setListeModuleMettreJour($nom_module, $version, $online_version) { |
||
272 | |||
273 | /** |
||
274 | * @param $activer |
||
275 | * @param $url |
||
276 | * fonction qui permet d'activer || désactiver un module |
||
277 | */ |
||
278 | public static function setActiverDesactiverModule($activer, $url) { |
||
288 | //-------------------------- FIN SETTER ----------------------------------------------------------------------------// |
||
289 | } |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.