[DependencyInjection] Fixed the getServiceIds
implementation to always return aliases
This commit is contained in:
parent
1f7250139f
commit
834d5cbce2
@ -405,7 +405,7 @@ class Container implements ResettableContainerInterface
|
|||||||
}
|
}
|
||||||
$ids[] = 'service_container';
|
$ids[] = 'service_container';
|
||||||
|
|
||||||
return array_map('strval', array_unique(array_merge($ids, array_keys($this->methodMap), array_keys($this->fileMap), array_keys($this->services))));
|
return array_map('strval', array_unique(array_merge($ids, array_keys($this->methodMap), array_keys($this->fileMap), array_keys($this->aliases), array_keys($this->services))));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -156,7 +156,7 @@ class ContainerTest extends TestCase
|
|||||||
|
|
||||||
$sc = new ProjectServiceContainer();
|
$sc = new ProjectServiceContainer();
|
||||||
$sc->set('foo', $obj = new \stdClass());
|
$sc->set('foo', $obj = new \stdClass());
|
||||||
$this->assertEquals(['service_container', 'internal', 'bar', 'foo_bar', 'foo.baz', 'circular', 'throw_exception', 'throws_exception_on_service_configuration', 'internal_dependency', 'foo'], $sc->getServiceIds(), '->getServiceIds() returns defined service ids by factory methods in the method map, followed by service ids defined by set()');
|
$this->assertEquals(['service_container', 'internal', 'bar', 'foo_bar', 'foo.baz', 'circular', 'throw_exception', 'throws_exception_on_service_configuration', 'internal_dependency', 'alias', 'foo'], $sc->getServiceIds(), '->getServiceIds() returns defined service ids by factory methods in the method map, followed by service ids defined by set()');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,7 +168,7 @@ class ContainerTest extends TestCase
|
|||||||
$sc = new LegacyProjectServiceContainer();
|
$sc = new LegacyProjectServiceContainer();
|
||||||
$sc->set('foo', $obj = new \stdClass());
|
$sc->set('foo', $obj = new \stdClass());
|
||||||
|
|
||||||
$this->assertEquals(['internal', 'bar', 'foo_bar', 'foo.baz', 'circular', 'throw_exception', 'throws_exception_on_service_configuration', 'service_container', 'foo'], $sc->getServiceIds(), '->getServiceIds() returns defined service ids by getXXXService() methods, followed by service ids defined by set()');
|
$this->assertEquals(['internal', 'bar', 'foo_bar', 'foo.baz', 'circular', 'throw_exception', 'throws_exception_on_service_configuration', 'service_container', 'alias', 'foo'], $sc->getServiceIds(), '->getServiceIds() returns defined service ids by getXXXService() methods, followed by service ids defined by set()');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSet()
|
public function testSet()
|
||||||
|
@ -1139,6 +1139,30 @@ class PhpDumperTest extends TestCase
|
|||||||
$this->assertTrue($container->has('foo'));
|
$this->assertTrue($container->has('foo'));
|
||||||
$this->assertSame('some value', $container->get('foo'));
|
$this->assertSame('some value', $container->get('foo'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAliasCanBeFoundInTheDumpedContainerWhenBothTheAliasAndTheServiceArePublic()
|
||||||
|
{
|
||||||
|
$container = new ContainerBuilder();
|
||||||
|
|
||||||
|
$container->register('foo', 'stdClass')->setPublic(true);
|
||||||
|
$container->setAlias('bar', 'foo')->setPublic(true);
|
||||||
|
|
||||||
|
$container->compile();
|
||||||
|
|
||||||
|
// Bar is found in the compiled container
|
||||||
|
$service_ids = $container->getServiceIds();
|
||||||
|
$this->assertContains('bar', $service_ids);
|
||||||
|
|
||||||
|
$dumper = new PhpDumper($container);
|
||||||
|
$dump = $dumper->dump(['class' => 'Symfony_DI_PhpDumper_AliasesCanBeFoundInTheDumpedContainer']);
|
||||||
|
eval('?>'.$dump);
|
||||||
|
|
||||||
|
$container = new \Symfony_DI_PhpDumper_AliasesCanBeFoundInTheDumpedContainer();
|
||||||
|
|
||||||
|
// Bar should still be found in the compiled container
|
||||||
|
$service_ids = $container->getServiceIds();
|
||||||
|
$this->assertContains('bar', $service_ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Rot13EnvVarProcessor implements EnvVarProcessorInterface
|
class Rot13EnvVarProcessor implements EnvVarProcessorInterface
|
||||||
|
Reference in New Issue
Block a user