Inject   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 24
Duplicated Lines 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
wmc 2
eloc 5
dl 0
loc 24
c 3
b 0
f 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A isOptional() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Ray\Di\Di;
6
7
use Attribute;
8
9
/**
10
 * Annotates your class methods into which the Injector should inject values
11
 *
12
 * @psalm-immutable
13
 */
14
#[Attribute(Attribute::TARGET_METHOD | Attribute::TARGET_PARAMETER)]
15
final class Inject implements InjectInterface
16
{
17
    /**
18
     * If true, and the appropriate binding is not found, the Injector will skip injection of this method or field rather than produce an error.
19
     *
20
     * @var bool
21
     */
22
    public $optional;
23
24
    /**
25
     * @SuppressWarnings("PHPMD.BooleanArgumentFlag")
26
     */
27
    public function __construct(bool $optional = false)
28
    {
29
        $this->optional = $optional;
30
    }
31
32
    /**
33
     * {@inheritdoc}
34
     */
35
    public function isOptional(): bool
36
    {
37
        return $this->optional;
38
    }
39
}
40