Avoid reflection-based registration for command public services
This commit is contained in:
parent
f8133cbd4e
commit
6c1b384b75
@ -53,7 +53,7 @@ class AddConsoleCommandPassTest extends TestCase
|
||||
}
|
||||
|
||||
$this->assertTrue($container->hasParameter('console.command.ids'));
|
||||
$this->assertSame(array($id), $container->getParameter('console.command.ids'));
|
||||
$this->assertSame(array($alias => $id), $container->getParameter('console.command.ids'));
|
||||
}
|
||||
|
||||
public function visibilityProvider()
|
||||
|
@ -39,16 +39,16 @@ class AddConsoleCommandPass implements CompilerPassInterface
|
||||
throw new InvalidArgumentException(sprintf('The service "%s" tagged "console.command" must be a subclass of "%s".', $id, Command::class));
|
||||
}
|
||||
|
||||
$commandId = 'console.command.'.strtolower(str_replace('\\', '_', $class));
|
||||
if ($container->hasAlias($commandId) || isset($serviceIds[$commandId])) {
|
||||
$commandId = $commandId.'_'.$id;
|
||||
}
|
||||
if (!$definition->isPublic()) {
|
||||
$serviceId = 'console.command.'.strtolower(str_replace('\\', '_', $class));
|
||||
if ($container->hasAlias($serviceId)) {
|
||||
$serviceId = $serviceId.'_'.$id;
|
||||
}
|
||||
$container->setAlias($serviceId, $id);
|
||||
$id = $serviceId;
|
||||
$container->setAlias($commandId, $id);
|
||||
$id = $commandId;
|
||||
}
|
||||
|
||||
$serviceIds[] = $id;
|
||||
$serviceIds[$commandId] = $id;
|
||||
}
|
||||
|
||||
$container->setParameter('console.command.ids', $serviceIds);
|
||||
|
@ -50,7 +50,7 @@ class AddConsoleCommandPassTest extends TestCase
|
||||
}
|
||||
|
||||
$this->assertTrue($container->hasParameter('console.command.ids'));
|
||||
$this->assertSame(array($id), $container->getParameter('console.command.ids'));
|
||||
$this->assertSame(array($alias => $id), $container->getParameter('console.command.ids'));
|
||||
}
|
||||
|
||||
public function visibilityProvider()
|
||||
|
@ -183,8 +183,9 @@ abstract class Bundle implements BundleInterface
|
||||
}
|
||||
$class = $ns.'\\'.$file->getBasename('.php');
|
||||
if ($this->container) {
|
||||
$commandIds = $this->container->hasParameter('console.command.ids') ? $this->container->getParameter('console.command.ids') : array();
|
||||
$alias = 'console.command.'.strtolower(str_replace('\\', '_', $class));
|
||||
if ($this->container->has($alias)) {
|
||||
if (isset($commandIds[$alias]) || $this->container->has($alias)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user