Conditions | 29 |
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 |
||
341 | public function where(string $field, $operator, $value = null) |
||
342 | { |
||
343 | if (is_null($value)) { |
||
344 | $value = $operator; |
||
345 | $operator = '='; |
||
346 | } |
||
347 | |||
348 | return $this->filter(function ($data) use ($field, $operator, $value) { |
||
349 | if (strpos($field, '.')) { |
||
350 | list($field, $relation) = explode('.', $field); |
||
351 | |||
352 | $result = $data[$field][$relation] ?? null; |
||
353 | } else { |
||
354 | $result = $data[$field] ?? null; |
||
355 | } |
||
356 | |||
357 | switch ($operator) { |
||
358 | case '===': |
||
1 ignored issue
–
show
|
|||
359 | return $result === $value; |
||
360 | case '!==': |
||
1 ignored issue
–
show
|
|||
361 | return $result !== $value; |
||
362 | case '!=': |
||
1 ignored issue
–
show
|
|||
363 | case '<>': |
||
1 ignored issue
–
show
|
|||
364 | return $result != $value; |
||
365 | case '>': |
||
1 ignored issue
–
show
|
|||
366 | return $result > $value; |
||
367 | case '>=': |
||
1 ignored issue
–
show
|
|||
368 | return $result >= $value; |
||
369 | case '<': |
||
1 ignored issue
–
show
|
|||
370 | return $result < $value; |
||
371 | case '<=': |
||
1 ignored issue
–
show
|
|||
372 | return $result <= $value; |
||
373 | case 'like': |
||
1 ignored issue
–
show
|
|||
374 | return is_string($result) && false !== strpos($result, $value); |
||
375 | case 'not like': |
||
1 ignored issue
–
show
|
|||
376 | return is_string($result) && false === strpos($result, $value); |
||
377 | case 'in': |
||
1 ignored issue
–
show
|
|||
378 | return is_scalar($result) && in_array($result, $value, true); |
||
379 | case 'not in': |
||
1 ignored issue
–
show
|
|||
380 | return is_scalar($result) && !in_array($result, $value, true); |
||
381 | case 'between': |
||
1 ignored issue
–
show
|
|||
382 | list($min, $max) = is_string($value) ? explode(',', $value) : $value; |
||
383 | return is_scalar($result) && $result >= $min && $result <= $max; |
||
384 | case 'not between': |
||
1 ignored issue
–
show
|
|||
385 | list($min, $max) = is_string($value) ? explode(',', $value) : $value; |
||
386 | return is_scalar($result) && $result > $max || $result < $min; |
||
387 | case '==': |
||
1 ignored issue
–
show
|
|||
388 | case '=': |
||
1 ignored issue
–
show
|
|||
389 | default: |
||
1 ignored issue
–
show
|
|||
390 | return $result == $value; |
||
391 | } |
||
621 |