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 DI\Definition\Exception\InvalidDefinition;
8
 
9
/**
10
 * Extends an array definition by adding new elements into it.
11
 *
12
 * @since 5.0
13
 * @author Matthieu Napoli <matthieu@mnapoli.fr>
14
 */
15
class ArrayDefinitionExtension extends ArrayDefinition implements ExtendsPreviousDefinition
16
{
17
    private ?ArrayDefinition $subDefinition = null;
18
 
19
    public function getValues() : array
20
    {
21
        if (! $this->subDefinition) {
22
            return parent::getValues();
23
        }
24
 
25
        return array_merge($this->subDefinition->getValues(), parent::getValues());
26
    }
27
 
28
    public function setExtendedDefinition(Definition $definition) : void
29
    {
30
        if (! $definition instanceof ArrayDefinition) {
31
            throw new InvalidDefinition(sprintf(
32
                'Definition %s tries to add array entries but the previous definition is not an array',
33
                $this->getName()
34
            ));
35
        }
36
 
37
        $this->subDefinition = $definition;
38
    }
39
}