container = $container;
parent::__construct();
}
protected function configure(): void
{
$this
->setDescription('List services available in Extensions');
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
$io = new SymfonyStyle($input, $output);
$rows = [];
$reflectedContainer = new \ReflectionClass($this->container);
$reflectionProperty = $reflectedContainer->getProperty('services');
$reflectionProperty->setAccessible(true);
$publicServices = $reflectionProperty->getValue($this->container);
foreach ($publicServices as $id => $name) {
$rows[] = [$id, get_class($name)];
}
$reflectionProperty = $reflectedContainer->getProperty('privates');
$reflectionProperty->setAccessible(true);
$privateServices = $reflectionProperty->getValue($this->container);
$io->text('Publicly accessible Services (' . count($rows) . '):');
$io->table(['Service ID', 'Class name / Alias'], $rows);
$rows = [];
foreach ($privateServices as $id => $name) {
$rows[] = [$id, get_class($name)];
}
$io->text('Private Services (' . count($rows) . '):');
$io->table(['Service ID', 'Class name / Alias'], $rows);
return 0;
}
}