* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShopBundle\DependencyInjection\Compiler; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; /** * Collects all Commands & Queries and puts them into container for later processing. */ class CommandAndQueryCollectorPass implements CompilerPassInterface { /** * {@inheritdoc} */ public function process(ContainerBuilder $container) { if (!in_array($container->getParameter('kernel.environment'), ['dev', 'test'])) { return; } $commandsAndQueries = $this->findCommandsAndQueries($container); $container->setParameter('prestashop.commands_and_queries', $commandsAndQueries); } /** * Gets command for each provided handler * * @param ContainerBuilder $container * * @return string[] */ private function findCommandsAndQueries(ContainerBuilder $container) { $handlers = $container->findTaggedServiceIds('tactician.handler'); $commands = []; foreach ($handlers as $handler) { if (isset(current($handler)['command'])) { $commands[] = current($handler)['command']; } } return $commands; } }