42 行
1 KiB
PHP
42 行
1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace DI\Definition;
|
|
|
|
use DI\Definition\Exception\InvalidDefinition;
|
|
|
|
/**
|
|
* Extends an array definition by adding new elements into it.
|
|
*
|
|
* @since 5.0
|
|
* @author Matthieu Napoli <matthieu@mnapoli.fr>
|
|
*/
|
|
class ArrayDefinitionExtension extends ArrayDefinition implements ExtendsPreviousDefinition
|
|
{
|
|
/**
|
|
* @var ArrayDefinition
|
|
*/
|
|
private $subDefinition;
|
|
|
|
public function getValues() : array
|
|
{
|
|
if (! $this->subDefinition) {
|
|
return parent::getValues();
|
|
}
|
|
|
|
return array_merge($this->subDefinition->getValues(), parent::getValues());
|
|
}
|
|
|
|
public function setExtendedDefinition(Definition $definition)
|
|
{
|
|
if (! $definition instanceof ArrayDefinition) {
|
|
throw new InvalidDefinition(sprintf(
|
|
'Definition %s tries to add array entries but the previous definition is not an array',
|
|
$this->getName()
|
|
));
|
|
}
|
|
|
|
$this->subDefinition = $definition;
|
|
}
|
|
}
|