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 |
||
24 | final class DoctrineDbalExecutorResult implements \IteratorAggregate, Statement |
||
25 | { |
||
26 | /** |
||
27 | * @var Statement |
||
28 | */ |
||
29 | private $statement; |
||
30 | |||
31 | /** |
||
32 | * DoctrineDbalExecutorResult constructor. |
||
33 | * |
||
34 | * @param Statement $statement Wrapped statement. |
||
35 | */ |
||
36 | 7 | public function __construct(Statement $statement) |
|
40 | |||
41 | /** |
||
42 | * Get single scalar result. |
||
43 | * |
||
44 | * @return mixed A single scalar value. |
||
45 | * |
||
46 | * @throws NoResultException |
||
47 | * @throws NonUniqueResultException |
||
48 | */ |
||
49 | 3 | View Code Duplication | public function getSingleScalarResult() |
63 | |||
64 | /** |
||
65 | * Get single scalar result or default value if there are no results of executed |
||
66 | * SELECT statement. |
||
67 | * |
||
68 | * @param mixed $default A default single scalar value. |
||
69 | * @return mixed A single scalar value. |
||
70 | */ |
||
71 | public function getSingleScalarResultOrDefault($default) |
||
79 | |||
80 | /** |
||
81 | * Get single scalar result or NULL value if there are no results of executed |
||
82 | * SELECT statement. |
||
83 | * |
||
84 | * @return mixed|null A single scalar value. |
||
85 | */ |
||
86 | public function getSingleScalarResultOrNull() |
||
90 | |||
91 | /** |
||
92 | * Get collection of scalar values. |
||
93 | * |
||
94 | * @return array A collection of scalar values. |
||
95 | */ |
||
96 | 1 | public function getScalarResult() |
|
106 | |||
107 | /** |
||
108 | * Get collection of scalar vales, or default value if collection is empty. |
||
109 | * |
||
110 | * @param mixed $default A default value. |
||
111 | * @return array|mixed A collection of scalar values or default value. |
||
112 | */ |
||
113 | public function getScalarResultOrDefault($default) |
||
123 | |||
124 | /** |
||
125 | * Get collection of scalar vales, or NULL value if collection is empty. |
||
126 | * |
||
127 | * @return array|mixed A collection of NULL value. |
||
128 | */ |
||
129 | public function getScalarResultOrNull() |
||
133 | |||
134 | /** |
||
135 | * Get single (first) row result from result set. |
||
136 | * |
||
137 | * @return array A single (first) row of result set. |
||
138 | * |
||
139 | * @throws NoResultException |
||
140 | * @throws NonUniqueResultException |
||
141 | */ |
||
142 | 1 | View Code Duplication | public function getSingleRowResult() |
156 | |||
157 | /** |
||
158 | * Get single (first) row result from result set or default value if result set is empty. |
||
159 | * |
||
160 | * @param mixed $default Default value if result set is empty. |
||
161 | * @return array A single (first) row of result set. |
||
162 | * |
||
163 | * @throws NoResultException |
||
164 | * @throws NonUniqueResultException |
||
165 | */ |
||
166 | public function getSingleRowOrDefault($default) |
||
174 | |||
175 | /** |
||
176 | * Get single (first) row result from result set or NULL value if result set is empty. |
||
177 | * |
||
178 | * @return array A single (first) row of result set. |
||
179 | * |
||
180 | * @throws NoResultException |
||
181 | * @throws NonUniqueResultException |
||
182 | */ |
||
183 | public function getSingleRowOrNull() |
||
187 | |||
188 | /** |
||
189 | * {@inheritdoc} |
||
190 | */ |
||
191 | public function closeCursor() |
||
195 | |||
196 | /** |
||
197 | * {@inheritdoc} |
||
198 | */ |
||
199 | public function columnCount() |
||
203 | |||
204 | /** |
||
205 | * {@inheritdoc} |
||
206 | */ |
||
207 | public function setFetchMode($fetchMode, $arg2 = null, $arg3 = null) |
||
211 | |||
212 | /** |
||
213 | * {@inheritdoc} |
||
214 | */ |
||
215 | public function fetch($fetchMode = null) |
||
219 | |||
220 | /** |
||
221 | * {@inheritdoc} |
||
222 | */ |
||
223 | public function fetchAll($fetchMode = null) |
||
227 | |||
228 | /** |
||
229 | * {@inheritdoc} |
||
230 | */ |
||
231 | public function fetchColumn($columnIndex = 0) |
||
235 | |||
236 | /** |
||
237 | * {@inheritdoc} |
||
238 | */ |
||
239 | public function bindValue($param, $value, $type = null) |
||
243 | |||
244 | /** |
||
245 | * {@inheritdoc} |
||
246 | */ |
||
247 | public function bindParam($column, &$variable, $type = null, $length = null) |
||
251 | |||
252 | /** |
||
253 | * {@inheritdoc} |
||
254 | */ |
||
255 | public function errorCode() |
||
259 | |||
260 | /** |
||
261 | * {@inheritdoc} |
||
262 | */ |
||
263 | public function errorInfo() |
||
267 | |||
268 | /** |
||
269 | * {@inheritdoc} |
||
270 | */ |
||
271 | public function execute($params = null) |
||
275 | |||
276 | /** |
||
277 | * {@inheritdoc} |
||
278 | */ |
||
279 | public function rowCount() |
||
283 | |||
284 | /** |
||
285 | * {@inheritdoc} |
||
286 | */ |
||
287 | public function __get($name) |
||
291 | |||
292 | /** |
||
293 | * {@inheritdoc} |
||
294 | */ |
||
295 | public function __set($name, $value) |
||
299 | |||
300 | /** |
||
301 | * {@inheritdoc} |
||
302 | */ |
||
303 | public function __isset($name) |
||
307 | |||
308 | /** |
||
309 | * {@inheritdoc} |
||
310 | */ |
||
311 | public function __call($name, $arguments) |
||
315 | |||
316 | /** |
||
317 | * {@inheritdoc} |
||
318 | */ |
||
319 | public function getIterator() |
||
325 | } |
||
326 |
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.