Passed
Pull Request — master (#21)
by David
02:25
created

TestController::test()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.2
c 0
b 0
f 0
cc 4
eloc 6
nc 3
nop 8

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
4
namespace TheCodingMachine\GraphQL\Controllers\Fixtures;
5
6
use TheCodingMachine\GraphQL\Controllers\Annotations\Logged;
7
use TheCodingMachine\GraphQL\Controllers\Annotations\Mutation;
8
use TheCodingMachine\GraphQL\Controllers\Annotations\Query;
9
use TheCodingMachine\GraphQL\Controllers\Annotations\Right;
10
11
class TestController
12
{
13
    /**
14
     * @Query
15
     * @param int $int
16
     * @param TestObject[] $list
17
     * @param bool|null $boolean
18
     * @param float|null $float
19
     * @param \DateTimeImmutable|null $dateTimeImmutable
20
     * @param \DateTime|\DateTimeInterface|null $dateTime
21
     * @param string $withDefault
22
     * @param null|string $string
23
     * @return TestObject
24
     */
25
    public function test(int $int, array $list, ?bool $boolean, ?float $float, ?\DateTimeImmutable $dateTimeImmutable, ?\DateTimeInterface $dateTime, string $withDefault = 'default', ?string $string = null): TestObject
26
    {
27
        $str = '';
28
        foreach ($list as $test) {
29
            if (!$test instanceof TestObject) {
30
                throw new \RuntimeException('TestObject instance expected.');
31
            }
32
            $str .= $test->getTest();
33
        }
34
        return new TestObject($string.$int.$str.($boolean?'true':'false').$float.$dateTimeImmutable->format('YmdHis').$dateTime->format('YmdHis').$withDefault);
0 ignored issues
show
Bug introduced by
The method format() does not exist on null. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

34
        return new TestObject($string.$int.$str.($boolean?'true':'false').$float.$dateTimeImmutable->/** @scrutinizer ignore-call */ format('YmdHis').$dateTime->format('YmdHis').$withDefault);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
35
    }
36
37
    /**
38
     * @Mutation
39
     * @param TestObject $testObject
40
     * @return TestObject
41
     */
42
    public function mutation(TestObject $testObject): TestObject
43
    {
44
        return $testObject;
45
    }
46
47
    /**
48
     * @Query
49
     * @Logged
50
     */
51
    public function testLogged(): TestObject
52
    {
53
        return new TestObject('foo');
54
    }
55
56
    /**
57
     * @Query
58
     * @Right(name="CAN_FOO")
59
     */
60
    public function testRight(): TestObject
61
    {
62
        return new TestObject('foo');
63
    }
64
65
    /**
66
     * @Query(returnType=TestType::class)
67
     */
68
    public function testFixReturnType(): TestObject
69
    {
70
        return new TestObject('foo');
71
    }
72
73
    /**
74
     * @Query(name="nameFromAnnotation")
75
     */
76
    public function testNameFromAnnotation(): TestObject
77
    {
78
        return new TestObject('foo');
79
    }
80
}
81