Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
1 | <?php |
||
6 | class ControllerBase extends Controller |
||
|
|||
7 | { |
||
8 | |||
9 | protected $model; |
||
10 | protected $title; |
||
11 | protected $controller; |
||
12 | protected $messageTimerInterval = 3000; |
||
13 | |||
14 | public function afterExecuteRoute($dispatcher) |
||
21 | |||
22 | public function indexAction($message = NULL) |
||
37 | |||
38 | public function frmAction($id = NULL) |
||
42 | |||
43 | public function getInstance($id = NULL) |
||
53 | |||
54 | public function readAction($id = NULL) |
||
62 | |||
63 | protected function setValuesToObject(&$object) |
||
67 | |||
68 | |||
69 | public function updateAction() |
||
93 | |||
94 | //PErmet l'édition d'un seul champ à la fois |
||
95 | View Code Duplication | public function soloUpdateAction() |
|
96 | { |
||
97 | $name = $this->request->getPost('name', 'string'); |
||
98 | //Créer la fonction variable 'set' en fonction du name en POST |
||
99 | $func = 'set' . ucfirst($name); |
||
100 | $projet = call_user_func($this->model . '::findFirst', $_POST['pk']); |
||
101 | $projet->$func($_POST['value']); |
||
102 | $projet->save(); |
||
103 | |||
104 | } |
||
105 | |||
106 | |||
107 | public function deleteAction($id = null) |
||
113 | |||
114 | public function asAdminAction() |
||
120 | |||
121 | public function asUserAction() |
||
127 | |||
128 | public function logoutAction() |
||
133 | |||
134 | |||
135 | /** |
||
136 | * Affiche un message Alert bootstrap |
||
137 | * @param DisplayedMessage $message |
||
138 | */ |
||
139 | public function _showDisplayedMessage($message) |
||
143 | |||
144 | /** |
||
145 | * Affiche un message Alert bootstrap |
||
146 | * @param string $message texte du message |
||
147 | * @param string $type type du message (info, success, warning ou danger) |
||
148 | * @param number $timerInterval durée en millisecondes d'affichage du message (0 pour que le message reste affiché) |
||
149 | * @param string $dismissable si vrai, l'alert dispose d'une croix de fermeture |
||
150 | */ |
||
151 | public function _showMessage($message, $type = "success", $timerInterval = 0, $dismissable = true, $visible = true) |
||
156 | |||
157 | |||
158 | public function messageSuccess($message, $timerInterval = 0, $dismissable = true) |
||
162 | |||
163 | /** |
||
164 | * Affiche un message Alert bootstrap de type warning |
||
165 | * @param string $message texte du message |
||
166 | * @param number $timerInterval durée en millisecondes d'affichage du message (0 pour que le message reste affiché) |
||
167 | * @param string $dismissable si vrai, l'alert dispose d'une croix de fermeture |
||
168 | */ |
||
169 | public function messageWarning($message, $timerInterval = 0, $dismissable = true) |
||
173 | |||
174 | /** |
||
175 | * Affiche un message Alert bootstrap de type danger |
||
176 | * @param string $message texte du message |
||
177 | * @param number $timerInterval durée en millisecondes d'affichage du message (0 pour que le message reste affiché) |
||
178 | * @param string $dismissable si vrai, l'alert dispose d'une croix de fermeture |
||
179 | */ |
||
180 | public function messageDanger($message, $timerInterval = 0, $dismissable = true) |
||
184 | |||
185 | /** |
||
186 | * Affiche un message Alert bootstrap de type info |
||
187 | * @param string $message texte du message |
||
188 | * @param number $timerInterval durée en millisecondes d'affichage du message (0 pour que le message reste affiché) |
||
189 | * @param string $dismissable si vrai, l'alert dispose d'une croix de fermeture |
||
190 | */ |
||
191 | public function messageInfo($message, $timerInterval = 0, $dismissable = true) |
||
195 | |||
196 | |||
197 | } |
||
198 |
You can fix this by adding a namespace to your class:
When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.