Issues (265)

src/Config/RestoreStateTrait.php (1 issue)

Severity
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Cycle\Database\Config;
6
7
trait RestoreStateTrait
8
{
9
    /**
10
     * @throws \ReflectionException
11
     */
12
    public static function __set_state(array $properties): static
13
    {
14
        $ref = new \ReflectionClass(static::class);
15
16
        $arguments = [];
17
        foreach ($ref->getConstructor()?->getParameters() ?? [] as $parameter) {
18
            $name = $parameter->getName();
19
            $arguments[$name] = \array_key_exists($name, $properties)
20
                ? $properties[$name]
21
                : $parameter->getDefaultValue();
22
        }
23
24
        return new static(...$arguments);
0 ignored issues
show
The call to Cycle\Database\Config\Re...ateTrait::__construct() has too many arguments starting with $arguments. ( Ignorable by Annotation )

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

24
        return /** @scrutinizer ignore-call */ new static(...$arguments);

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
25
    }
26
}
27