mirror of
https://github.com/rectorphp/rector.git
synced 2024-05-31 08:20:53 +00:00
6c20d257e3
d3d18d442c
keep relative paths
51 lines
1.7 KiB
PHP
51 lines
1.7 KiB
PHP
<?php
|
|
|
|
declare (strict_types=1);
|
|
namespace RectorPrefix202209\Symplify\PackageBuilder\DependencyInjection\FileLoader;
|
|
|
|
use RectorPrefix202209\Symfony\Component\Config\FileLocatorInterface;
|
|
use RectorPrefix202209\Symfony\Component\DependencyInjection\ContainerBuilder;
|
|
use RectorPrefix202209\Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
|
use RectorPrefix202209\Symplify\PackageBuilder\Yaml\ParametersMerger;
|
|
/**
|
|
* @api
|
|
*
|
|
* The need:
|
|
* - https://github.com/symfony/symfony/issues/26713
|
|
* - https://github.com/symfony/symfony/pull/21313#issuecomment-372037445
|
|
*
|
|
* @property ContainerBuilder $container
|
|
*/
|
|
final class ParameterMergingPhpFileLoader extends PhpFileLoader
|
|
{
|
|
/**
|
|
* @var \Symplify\PackageBuilder\Yaml\ParametersMerger
|
|
*/
|
|
private $parametersMerger;
|
|
public function __construct(ContainerBuilder $containerBuilder, FileLocatorInterface $fileLocator)
|
|
{
|
|
$this->parametersMerger = new ParametersMerger();
|
|
parent::__construct($containerBuilder, $fileLocator);
|
|
}
|
|
/**
|
|
* Same as parent, just merging parameters instead overriding them
|
|
*
|
|
* @see https://github.com/symplify/symplify/pull/697
|
|
* @param mixed $resource
|
|
* @return mixed
|
|
*/
|
|
public function load($resource, string $type = null)
|
|
{
|
|
// get old parameters
|
|
$parameterBag = $this->container->getParameterBag();
|
|
$oldParameters = $parameterBag->all();
|
|
parent::load($resource);
|
|
foreach ($oldParameters as $key => $oldValue) {
|
|
$currentParameterValue = $this->container->getParameter($key);
|
|
$newValue = $this->parametersMerger->merge($oldValue, $currentParameterValue);
|
|
$this->container->setParameter($key, $newValue);
|
|
}
|
|
return null;
|
|
}
|
|
}
|