private function loadQueues(ContainerBuilder $container, $config) { foreach ($config as $queueId => $queueConfig) { $type = $queueConfig['type']; if ($type == 'pheanstalk') { $pheanstalkId = array_key_exists('pheanstalk_id', $queueConfig) ? $queueConfig['pheanstalk_id'] : 'default'; if (!array_key_exists('tube', $queueConfig)) { throw new \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException('Queue configuration "' . $queueId . '" does not have tube.'); } $definition = new \Symfony\Component\DependencyInjection\Definition(); $definition->setClass($container->getParameter('eventio_bbq.defaults.queue.pheanstalk.class')); $definition->setArguments(array($queueId, $container->getDefinition(sprintf('eventio_bbq.pheanstalk.%s', $pheanstalkId)), $queueConfig['tube'])); } elseif ($type == 'predis') { $pheanstalkId = array_key_exists('predis_id', $queueConfig) ? $queueConfig['predis_id'] : 'default'; if (!array_key_exists('key', $queueConfig)) { throw new \Symfony\Component\DependencyInjection\Exception\InvalidArgumentException('Queue configuration "' . $queueId . '" does not have a key.'); } if (!array_key_exists('config', $queueConfig) || !is_array($queueConfig['config'])) { $queueConfig['config'] = array(); } $definition = new \Symfony\Component\DependencyInjection\Definition(); $definition->setClass($container->getParameter('eventio_bbq.defaults.queue.predis.class')); $definition->setArguments(array($queueId, $container->getDefinition(sprintf('eventio_bbq.predis.%s', $pheanstalkId)), $queueConfig['key'], $queueConfig['config'])); } elseif ($type == 'directory') { $definition = new \Symfony\Component\DependencyInjection\Definition(); $definition->setClass($container->getParameter('eventio_bbq.defaults.queue.directory.class')); $definition->setArguments(array($queueId, $queueConfig['directory'])); } else { throw new \Exception('Invalid queue type ' . $type); } $container->setDefinition(sprintf('eventio_bbq.%s', $queueId), $definition); $container->getDefinition('eventio_bbq')->addMethodCall('registerQueue', array($container->getDefinition(sprintf('eventio_bbq.%s', $queueId)))); } }
public function process(\Symfony\Component\DependencyInjection\ContainerBuilder $container) { //Backward compatibility with Fos User 1.3 if (class_exists('FOS\\UserBundle\\FOSUserEvents')) { $fosUserListenerFlash = new \Symfony\Component\DependencyInjection\Definition(); $fosUserListenerFlash->setClass('Tecnocreaciones\\Bundle\\AjaxFOSUserBundle\\EventListener\\FlashListener')->addArgument($container->getDefinition('session'))->addArgument($container->getAlias('translator'))->setTags(array('kernel.event_subscriber')); } }
/** * {@inheritDoc} */ public function load(array $configs, ContainerBuilder $container) { $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); $loader->load('services.yml'); if (!empty($config['repository'])) { //Main Repo $container->setDefinition($config['repository_key'], new \Symfony\Component\DependencyInjection\Definition($config['repository_factory'], array('em' => new \Symfony\Component\DependencyInjection\Reference('em'), 'map' => $config['repository'], 'container' => new \Symfony\Component\DependencyInjection\Reference('service_container')))); foreach ($config['repository'] as $key => $options) { $definition = new \Symfony\Component\DependencyInjection\Definition($config['repository_factory'], array($key)); $definition->setFactoryService($config['repository_key']); $definition->setFactoryMethod('get'); $container->setDefinition($config['repository_key'] . '.' . $key, $definition); } } }
<?php $file = __DIR__ . '/container_test5.php'; if (file_exists($file)) { require_once $file; $container = new ProjectServiceContainer(); } else { $container = new Symfony\Component\DependencyInjection\ContainerBuilder(); $container->register('A', 'A'); $ref = [new Symfony\Component\DependencyInjection\Reference('A')]; $definition = new Symfony\Component\DependencyInjection\Definition('B', $ref); $definition->setScope('prototype'); $container->setDefinition('B', $definition); $container->compile(); $dumper = new Symfony\Component\DependencyInjection\Dumper\PhpDumper($container); file_put_contents($file, $dumper->dump()); } //trigger autoloader $a = $container->get('B'); unset($a); $t1 = microtime(true); for ($i = 0; $i < 10000; $i++) { $a = $container->get('B'); } $t2 = microtime(true); $results = ['time' => $t2 - $t1, 'files' => count(get_included_files()), 'memory' => memory_get_peak_usage() / 1024 / 1024]; echo json_encode($results);
<?php $file = __DIR__ . '/container_test6.php'; if (file_exists($file)) { require_once $file; $container = new ProjectServiceContainer(); } else { $container = new Symfony\Component\DependencyInjection\ContainerBuilder(); $classes = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; for ($i = 0; $i < count($classes); $i++) { if (isset($classes[$i - 1])) { $ref = [new Symfony\Component\DependencyInjection\Reference($classes[$i - 1])]; } else { $ref = []; } $definition = new Symfony\Component\DependencyInjection\Definition($classes[$i], $ref); $definition->setScope('prototype'); $container->setDefinition($classes[$i], $definition); } $container->compile(); $dumper = new Symfony\Component\DependencyInjection\Dumper\PhpDumper($container); file_put_contents($file, $dumper->dump()); } //Trigger autoloader $a = $container->get('J'); unset($a); $t1 = microtime(true); for ($i = 0; $i < 10000; $i++) { $a = $container->get('J'); } $t2 = microtime(true);
<?php use Symfony\Component\DependencyInjection\Reference; if (!$container->hasParameter('api.endpoint') || !$container->hasParameter('api.key')) { throw new \Exception('Required parameter not found'); } $apiMakesDef = new \Symfony\Component\DependencyInjection\Definition(); $apiMakesDef->setClass('DG\\SymfonyCert\\Service\\EdmundsApi\\MakesService')->addArgument('%api.endpoint%')->addArgument('%api.key%')->addArgument(new Reference('delegating_serializer'))->addMethodCall('setLogger', [new Reference('array_logger')])->addMethodCall('setStatService', [new Reference('service.stat.calls')]); $container->setDefinition('api.makes', $apiMakesDef); $container->register('delegating_serializer', 'DG\\SymfonyCert\\Service\\Serializer\\DelegatingSerializer'); $container->register('array_logger', 'DG\\SymfonyCert\\Service\\Logger\\ArrayLogger');
public function toSymfonyDefinition(tubepress_api_ioc_DefinitionInterface $definition) { if ($definition instanceof tubepress_internal_ioc_Definition) { return $definition->getUnderlyingSymfonyDefinition(); } $cleanedArguments = $this->convertToSymfonyReferenceIfNecessary($definition->getArguments()); $cleanedMethodCalls = $this->convertToSymfonyReferenceIfNecessary($definition->getMethodCalls()); $toReturn = new \Symfony\Component\DependencyInjection\Definition($definition->getClass(), $cleanedArguments); $toReturn->setConfigurator($definition->getConfigurator()); $toReturn->setDecoratedService($definition->getDecoratedService()); $toReturn->setFactoryClass($definition->getFactoryClass()); $toReturn->setFactoryMethod($definition->getFactoryMethod()); $toReturn->setFactoryService($definition->getFactoryService()); $toReturn->setFile($definition->getFile()); $toReturn->setMethodCalls($cleanedMethodCalls); $toReturn->setProperties($definition->getProperties()); $toReturn->setTags($definition->getTags()); return $toReturn; }