Passed
Pull Request — master (#1221)
by Aleksei
11:29
created

DeprecationProxy   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 6
eloc 11
dl 0
loc 35
ccs 13
cts 13
cp 1
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 12 4
A getReturnClass() 0 12 2
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Spiral\Core\Config;
6
7
/**
8
 * @internal
9
 */
10
final class DeprecationProxy extends Proxy
11
{
12
    /**
13
     * @param class-string $interface
0 ignored issues
show
Documentation Bug introduced by
The doc comment class-string at position 0 could not be parsed: Unknown type name 'class-string' at position 0 in class-string.
Loading history...
14
     */
15 365
    public function __construct(
16
        string $interface,
17
        bool $singleton = false,
18
        private readonly string|\BackedEnum|null $scope = null,
19
        private readonly ?string $version = null,
20
        private readonly ?string $message = null,
21
    ) {
22 365
        if (($scope === null || $version === null) && $message === null) {
23 3
            throw new \InvalidArgumentException('Scope and version or custom message must be provided.');
24
        }
25
26 362
        parent::__construct($interface, $singleton);
27
    }
28
29
    /**
30
     * @return class-string
0 ignored issues
show
Documentation Bug introduced by
The doc comment class-string at position 0 could not be parsed: Unknown type name 'class-string' at position 0 in class-string.
Loading history...
31
     * @internal
32
     */
33 4
    public function getReturnClass(): string
34
    {
35 4
        $message = $this->message ?? \sprintf(
36 4
            'Using `%s` outside of the `%s` scope is deprecated and will be impossible in version %s.',
37 4
            $this->interface,
38 4
            $this->scope instanceof \BackedEnum ? $this->scope->value : $this->scope,
0 ignored issues
show
Bug introduced by
Accessing value on the interface BackedEnum suggest that you code against a concrete implementation. How about adding an instanceof check?
Loading history...
39 4
            $this->version,
40 4
        );
41
42 4
        @\trigger_error($message, \E_USER_DEPRECATED);
43
44 4
        return parent::getReturnClass();
45
    }
46
}
47