Conditions | 31 |
Paths | 2 |
Total Lines | 50 |
Code Lines | 43 |
Lines | 0 |
Ratio | 0 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
340 | public function where($field, $operator, $value = null) |
||
341 | { |
||
342 | if (is_null($value)) { |
||
343 | $value = $operator; |
||
344 | $operator = '='; |
||
345 | } |
||
346 | |||
347 | return $this->filter(function ($data) use ($field, $operator, $value) { |
||
348 | if (strpos($field, '.')) { |
||
349 | list($field, $relation) = explode('.', $field); |
||
350 | |||
351 | $result = isset($data[$field][$relation]) ? $data[$field][$relation] : null; |
||
352 | } else { |
||
353 | $result = isset($data[$field]) ? $data[$field] : null; |
||
354 | } |
||
355 | |||
356 | switch ($operator) { |
||
357 | case '===': |
||
1 ignored issue
–
show
|
|||
358 | return $result === $value; |
||
359 | case '!==': |
||
1 ignored issue
–
show
|
|||
360 | return $result !== $value; |
||
361 | case '!=': |
||
1 ignored issue
–
show
|
|||
362 | case '<>': |
||
1 ignored issue
–
show
|
|||
363 | return $result != $value; |
||
364 | case '>': |
||
1 ignored issue
–
show
|
|||
365 | return $result > $value; |
||
366 | case '>=': |
||
1 ignored issue
–
show
|
|||
367 | return $result >= $value; |
||
368 | case '<': |
||
1 ignored issue
–
show
|
|||
369 | return $result < $value; |
||
370 | case '<=': |
||
1 ignored issue
–
show
|
|||
371 | return $result <= $value; |
||
372 | case 'like': |
||
1 ignored issue
–
show
|
|||
373 | return is_string($result) && false !== strpos($result, $value); |
||
374 | case 'not like': |
||
1 ignored issue
–
show
|
|||
375 | return is_string($result) && false === strpos($result, $value); |
||
376 | case 'in': |
||
1 ignored issue
–
show
|
|||
377 | return is_scalar($result) && in_array($result, $value, true); |
||
378 | case 'not in': |
||
1 ignored issue
–
show
|
|||
379 | return is_scalar($result) && !in_array($result, $value, true); |
||
380 | case 'between': |
||
1 ignored issue
–
show
|
|||
381 | list($min, $max) = is_string($value) ? explode(',', $value) : $value; |
||
382 | return is_scalar($result) && $result >= $min && $result <= $max; |
||
383 | case 'not between': |
||
1 ignored issue
–
show
|
|||
384 | list($min, $max) = is_string($value) ? explode(',', $value) : $value; |
||
385 | return is_scalar($result) && $result > $max || $result < $min; |
||
386 | case '==': |
||
1 ignored issue
–
show
|
|||
387 | case '=': |
||
1 ignored issue
–
show
|
|||
388 | default: |
||
1 ignored issue
–
show
|
|||
389 | return $result == $value; |
||
390 | } |
||
553 |