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
/**
8
 * Defines injections on an existing class instance.
9
 *
10
 * @since  5.0
11
 * @author Matthieu Napoli <matthieu@mnapoli.fr>
12
 */
13
class InstanceDefinition implements Definition
14
{
15
    /**
16
     * @param object $instance Instance on which to inject dependencies.
17
     */
18
    public function __construct(
19
        private object $instance,
20
        private ObjectDefinition $objectDefinition,
21
    ) {
22
    }
23
 
24
    public function getName() : string
25
    {
26
        // Name are superfluous for instance definitions
27
        return '';
28
    }
29
 
30
    public function setName(string $name) : void
31
    {
32
        // Name are superfluous for instance definitions
33
    }
34
 
35
    public function getInstance() : object
36
    {
37
        return $this->instance;
38
    }
39
 
40
    public function getObjectDefinition() : ObjectDefinition
41
    {
42
        return $this->objectDefinition;
43
    }
44
 
45
    public function replaceNestedDefinitions(callable $replacer) : void
46
    {
47
        $this->objectDefinition->replaceNestedDefinitions($replacer);
48
    }
49
 
50
    public function __toString() : string
51
    {
52
        return 'Instance';
53
    }
54
}