예제 #1
0
 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))));
     }
 }
예제 #2
0
 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');
예제 #7
0
 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;
 }