Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace DI\Definition;
6
 
7
use Psr\Container\ContainerInterface;
8
 
9
/**
10
 * Definition of a value for dependency injection.
11
 *
12
 * @author Matthieu Napoli <matthieu@mnapoli.fr>
13
 */
14
class ValueDefinition implements Definition, SelfResolvingDefinition
15
{
16
    /**
17
     * Entry name.
18
     */
19
    private string $name = '';
20
 
21
    public function __construct(
22
        private mixed $value,
23
    ) {
24
    }
25
 
26
    public function getName() : string
27
    {
28
        return $this->name;
29
    }
30
 
31
    public function setName(string $name) : void
32
    {
33
        $this->name = $name;
34
    }
35
 
36
    public function getValue() : mixed
37
    {
38
        return $this->value;
39
    }
40
 
41
    public function resolve(ContainerInterface $container) : mixed
42
    {
43
        return $this->getValue();
44
    }
45
 
46
    public function isResolvable(ContainerInterface $container) : bool
47
    {
48
        return true;
49
    }
50
 
51
    public function replaceNestedDefinitions(callable $replacer) : void
52
    {
53
        // no nested definitions
54
    }
55
 
56
    public function __toString() : string
57
    {
58
        return sprintf('Value (%s)', var_export($this->value, true));
59
    }
60
}