/** * Loads the Swift Mailer configuration. * * Usage example: * * <swift:mailer transport="gmail" delivery_strategy="spool"> * <swift:username>fabien</swift:username> * <swift:password>xxxxx</swift:password> * <swift:spool path="/path/to/spool/" /> * </swift:mailer> * * @param array $config An array of configuration settings * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance */ public function mailerLoad($config, ContainerBuilder $container) { if (!$container->hasDefinition('swiftmailer.mailer')) { $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config'); $loader->load($this->resources['mailer']); $container->setAlias('mailer', 'swiftmailer.mailer'); } $r = new \ReflectionClass('Swift_Message'); $container->setParameter('swiftmailer.base_dir', dirname(dirname(dirname($r->getFilename())))); $transport = $container->getParameter('swiftmailer.transport.name'); if (array_key_exists('transport', $config)) { if (null === $config['transport']) { $transport = 'null'; } elseif ('gmail' === $config['transport']) { $config['encryption'] = 'ssl'; $config['auth_mode'] = 'login'; $config['host'] = 'smtp.gmail.com'; $transport = 'smtp'; } else { $transport = $config['transport']; } $container->setParameter('swiftmailer.transport.name', $transport); } $container->setAlias('swiftmailer.transport', 'swiftmailer.transport.' . $transport); if (isset($config['encryption']) && 'ssl' === $config['encryption'] && !isset($config['port'])) { $config['port'] = 465; } foreach (array('encryption', 'port', 'host', 'username', 'password', 'auth_mode') as $key) { if (isset($config[$key])) { $container->setParameter('swiftmailer.transport.' . $transport . '.' . $key, $config[$key]); } } // spool? if (isset($config['spool'])) { $type = isset($config['type']) ? $config['type'] : 'file'; $container->setAlias('swiftmailer.transport.real', 'swiftmailer.transport.' . $transport); $container->setAlias('swiftmailer.transport', 'swiftmailer.transport.spool'); $container->setAlias('swiftmailer.spool', 'swiftmailer.spool.' . $type); foreach (array('path') as $key) { if (isset($config['spool'][$key])) { $container->setParameter('swiftmailer.spool.' . $type . '.' . $key, $config['spool'][$key]); } } } if (isset($config['delivery_address'])) { $container->setParameter('swiftmailer.single_address', $config['delivery_address']); $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.redirecting'))); } if (isset($config['disable_delivery']) && $config['disable_delivery']) { $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.blackhole'))); } }
/** * Loads the DBAL configuration defaults. * * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ protected function loadDbalDefaults(array $config, ContainerBuilder $container) { if (!$container->hasDefinition('doctrine.dbal.logger')) { $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config'); $loader->load($this->resources['dbal']); } $defaultConnectionName = isset($config['default_connection']) ? $config['default_connection'] : $container->getParameter('doctrine.dbal.default_connection'); $container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $defaultConnectionName)); $container->setParameter('doctrine.dbal.default_connection', $defaultConnectionName); }
/** * Loads the i18n configuration. * * Usage example: * * <zend:i18n locale="en" adapter="xliff" data="/path/to/messages.xml" /> * * @param array $config An array of configuration settings * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance */ public function i18nLoad($config, ContainerBuilder $container) { if (!$container->hasDefinition('zend.i18n')) { $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config'); $loader->load($this->resources['i18n']); $container->setAlias('i18n', 'zend.i18n'); } if (isset($config['locale'])) { $container->setParameter('zend.translator.locale', $config['locale']); } if (isset($config['adapter'])) { $container->setParameter('zend.translator.adapter', constant($config['adapter'])); } if (isset($config['translations']) && is_array($config['translations'])) { foreach ($config['translations'] as $locale => $catalogue) { if ($locale == $container->getParameter('zend.translator.locale')) { $container->setParameter('zend.translator.catalogue', $catalogue); } $container->findDefinition('zend.translator')->addMethodCall('addTranslation', array($catalogue, $locale)); } } }
/** * Loads the templating configuration. * * @param array $config An array of configuration settings * @param \Symfony\Components\DependencyInjection\ContainerBuilder $container A ContainerBuilder instance */ public function templatingLoad($config, ContainerBuilder $container) { if (!$container->hasDefinition('templating')) { $loader = new XmlFileLoader($container, __DIR__ . '/../Resources/config'); $loader->load($this->resources['templating']); } if (array_key_exists('escaping', $config)) { $container->setParameter('templating.output_escaper', $config['escaping']); } if (array_key_exists('assets_version', $config)) { $container->setParameter('templating.assets.version', $config['assets_version']); } // path for the filesystem loader if (isset($config['path'])) { $container->setParameter('templating.loader.filesystem.path', $config['path']); } // loaders if (isset($config['loader'])) { $loaders = array(); $ids = is_array($config['loader']) ? $config['loader'] : array($config['loader']); foreach ($ids as $id) { $loaders[] = new Reference($id); } if (1 === count($loaders)) { $container->setAlias('templating.loader', (string) $loaders[0]); } else { $container->getDefinition('templating.loader.chain')->addArgument($loaders); $container->setAlias('templating.loader', 'templating.loader.chain'); } } // cache? $container->setParameter('templating.loader.cache.path', null); if (isset($config['cache'])) { // wrap the loader with some cache $container->setDefinition('templating.loader.wrapped', $container->findDefinition('templating.loader')); $container->setDefinition('templating.loader', $container->getDefinition('templating.loader.cache')); $container->setParameter('templating.loader.cache.path', $config['cache']); } }
<?php require_once __DIR__ . '/../includes/classes.php'; use Symfony\Components\DependencyInjection\ContainerInterface; use Symfony\Components\DependencyInjection\ContainerBuilder; use Symfony\Components\DependencyInjection\Reference; use Symfony\Components\DependencyInjection\Parameter; $container = new ContainerBuilder(); $container->register('foo', 'FooClass')->addAnnotation('foo', array('foo' => 'foo'))->addAnnotation('foo', array('bar' => 'bar'))->setFactoryMethod('getInstance')->setArguments(array('foo', new Reference('foo.baz'), array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, new Reference('service_container')))->setFile(realpath(__DIR__ . '/../includes/foo.php'))->setShared(false)->addMethodCall('setBar', array('bar'))->addMethodCall('initialize')->setConfigurator('sc_configure'); $container->register('bar', 'FooClass')->setArguments(array('foo', new Reference('foo.baz'), new Parameter('foo_bar')))->setShared(true)->setConfigurator(array(new Reference('foo.baz'), 'configure')); $container->register('foo.baz', '%baz_class%')->setFactoryMethod('getInstance')->setConfigurator(array('%baz_class%', 'configureStatic1')); $container->register('foo_bar', '%foo_class%'); $container->getParameterBag()->clear(); $container->getParameterBag()->add(array('baz_class' => 'BazClass', 'foo_class' => 'FooClass', 'foo' => 'bar')); $container->setAlias('alias_for_foo', 'foo'); $container->register('method_call1', 'FooClass')->addMethodCall('setBar', array(new Reference('foo')))->addMethodCall('setBar', array(new Reference('foo', ContainerInterface::NULL_ON_INVALID_REFERENCE)))->addMethodCall('setBar', array(new Reference('foo', ContainerInterface::IGNORE_ON_INVALID_REFERENCE)))->addMethodCall('setBar', array(new Reference('foobaz', ContainerInterface::IGNORE_ON_INVALID_REFERENCE))); $container->register('factory_service')->setFactoryService('foo.baz')->setFactoryMethod('getInstance'); return $container;
/** * @covers Symfony\Components\DependencyInjection\ContainerBuilder::findDefinition */ public function testFindDefinition() { $container = new ContainerBuilder(); $container->setDefinition('foo', $definition = new Definition('FooClass')); $container->setAlias('bar', 'foo'); $container->setAlias('foobar', 'bar'); $this->assertEquals($definition, $container->findDefinition('foobar'), '->findDefinition() returns a Definition'); }