diff --git a/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php new file mode 100644 index 0000000000000..41083679a2377 --- /dev/null +++ b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/Configuration.php @@ -0,0 +1,211 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bundle\DoctrineBundle\DependencyInjection; + +use Symfony\Component\Config\Definition\Builder\NodeBuilder; +use Symfony\Component\Config\Definition\Builder\TreeBuilder; + +/** + * This class contains the configuration information for the bundle + * + * This information is solely responsible for how the different configuration + * sections are normalized, and merged. + * + * @author Christophe Coevoet + */ +class Configuration +{ + private $kernelDebug; + + /** + * Generates the configuration tree. + * + * @param Boolean $kernelDebug + * @return \Symfony\Component\Config\Definition\NodeInterface + */ + public function getConfigTree($kernelDebug) + { + $this->kernelDebug = (bool) $kernelDebug; + + $treeBuilder = new TreeBuilder(); + $rootNode = $treeBuilder->root('doctrine', 'array'); + + $this->addDbalSection($rootNode); + $this->addOrmSection($rootNode); + + return $treeBuilder->buildTree(); + } + + private function addDbalSection(NodeBuilder $node) + { + $node + ->arrayNode('dbal') + ->beforeNormalization() + ->ifNull() + ->then(function($v) { return array (); }) // Let use the default values with the subsequent closure. + ->end() + ->beforeNormalization() + ->ifTrue(function($v){ return is_array($v) && !array_key_exists('connections', $v) && !array_key_exists('connection', $v); }) + ->then(function($v) { + $connection = array (); + $keys = array ('dbname', 'host', 'port', 'user', 'password', 'driver', 'driver_class', 'options', 'path', 'memory', 'unix_socket', 'wrapper_class', 'platform_service', 'charset', 'logging'); + foreach ($keys as $key) { + if (array_key_exists($key, $v)) { + $connection[$key] = $v[$key]; + unset($v[$key]); + } + } + $defaultConnection = isset($v['default_connection']) ? (string) $v['default_connection'] : 'default'; + $v['connections'] = array ($defaultConnection => $connection); + $v['default_connection'] = $defaultConnection; + return $v; + }) + ->end() + ->scalarNode('default_connection')->isRequired()->cannotBeEmpty()->end() + ->fixXmlConfig('type') + ->arrayNode('types') + ->useAttributeAsKey('name') + ->prototype('scalar') + ->beforeNormalization() + ->ifTrue(function($v) { return is_array($v) && isset($v['class']); }) + ->then(function($v) { return $v['class']; }) + ->end() + ->end() + ->end() + ->fixXmlConfig('connection') + ->builder($this->getDbalConnectionsNode()) + ->end() + ; + } + + private function getDbalConnectionsNode() + { + $node = new NodeBuilder('connections', 'array'); + $node + ->requiresAtLeastOneElement() + ->useAttributeAsKey('name') + ->prototype('array') + ->scalarNode('dbname')->end() + ->scalarNode('host')->defaultValue('localhost')->end() + ->scalarNode('port')->defaultNull()->end() + ->scalarNode('user')->defaultValue('root')->end() + ->scalarNode('password')->defaultNull()->end() + ->scalarNode('driver')->defaultValue('pdo_mysql')->end() + ->fixXmlConfig('driver_class', 'driverClass') + ->scalarNode('driver_class')->end() + ->fixXmlConfig('options', 'driverOptions') + ->arrayNode('driverOptions') + ->useAttributeAsKey('key') + ->prototype('scalar')->end() + ->end() + ->scalarNode('path')->end() + ->booleanNode('memory')->end() + ->scalarNode('unix_socket')->end() + ->fixXmlConfig('wrapper_class', 'wrapperClass') + ->scalarNode('wrapper_class')->end() + ->scalarNode('platform_service')->end() + ->scalarNode('charset')->defaultValue('UTF-8')->end() + ->booleanNode('logging')->defaultValue($this->kernelDebug)->end() + ->end() + ; + + return $node; + } + + private function addOrmSection(NodeBuilder $node) + { + $node + ->arrayNode('orm') + ->beforeNormalization() + ->ifTrue(function($v){ return is_array($v) && !array_key_exists('entity_managers', $v) && !array_key_exists('entity_manager', $v); }) + ->then(function($v) { + $entityManager = array (); + $keys = array ('result_cache_driver', 'result-cache-driver', 'metadata_cache_driver', 'metadata-cache-driver', 'query_cache_driver', 'query-cache-driver', 'mappings', 'mapping', 'connection'); + foreach ($keys as $key) { + if (array_key_exists($key, $v)) { + $entityManager[$key] = $v[$key]; + unset($v[$key]); + } + } + $defaultEntityManager = isset($v['default_entity_manager']) ? (string) $v['default_entity_manager'] : 'default'; + $v['entity_managers'] = array ($defaultEntityManager => $entityManager); + $v['default_entity_manager'] = $defaultEntityManager; + return $v; + }) + ->end() + ->scalarNode('default_entity_manager')->isRequired()->cannotBeEmpty()->end() + ->booleanNode('auto_generate_proxy_classes')->defaultFalse()->end() + ->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/orm/Proxies')->end() + ->scalarNode('proxy_namespace')->defaultValue('Proxies')->end() + ->fixXmlConfig('entity_manager') + ->builder($this->getOrmEntityManagersNode()) + ->end() + ; + } + + private function getOrmEntityManagersNode() + { + $node = new NodeBuilder('entity_managers', 'array'); + $node + ->requiresAtLeastOneElement() + ->useAttributeAsKey('name') + ->prototype('array') + ->addDefaultsIfNotSet() + ->builder($this->getOrmCacheDriverNode('query_cache_driver')) + ->builder($this->getOrmCacheDriverNode('metadata_cache_driver')) + ->builder($this->getOrmCacheDriverNode('result_cache_driver')) + ->scalarNode('connection')->end() + ->scalarNode('class_metadata_factory_name')->defaultValue('%doctrine.orm.class_metadata_factory_name%')->end() + ->fixXmlConfig('mapping') + ->arrayNode('mappings') + ->isRequired() + ->requiresAtLeastOneElement() + ->useAttributeAsKey('name') + ->prototype('array') + ->beforeNormalization() + ->ifString() + ->then(function($v) { return array ('type' => $v); }) + ->end() + ->treatNullLike(array ()) + ->scalarNode('type')->end() + ->scalarNode('dir')->end() + ->scalarNode('alias')->end() + ->scalarNode('prefix')->end() + ->booleanNode('is_bundle')->end() + ->performNoDeepMerging() + ->end() + ->end() + ->end() + ; + + return $node; + } + + private function getOrmCacheDriverNode($name) + { + $node = new NodeBuilder($name, 'array'); + $node + ->addDefaultsIfNotSet() + ->beforeNormalization() + ->ifString() + ->then(function($v) { return array ('type' => $v); }) + ->end() + ->scalarNode('type')->defaultValue('array')->isRequired()->end() + ->scalarNode('host')->end() + ->scalarNode('port')->end() + ->scalarNode('instance_class')->end() + ->scalarNode('class')->end() + ; + + return $node; + } +} diff --git a/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php index bb47cb867f673..6bd84f04dc2e7 100755 --- a/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php +++ b/src/Symfony/Bundle/DoctrineBundle/DependencyInjection/DoctrineExtension.php @@ -12,7 +12,6 @@ namespace Symfony\Bundle\DoctrineBundle\DependencyInjection; use Symfony\Component\DependencyInjection\Alias; -use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; @@ -20,6 +19,7 @@ use Symfony\Component\Config\Resource\FileResource; use Symfony\Bundle\DoctrineAbstractBundle\DependencyInjection\AbstractDoctrineExtension; use Symfony\Component\Config\FileLocator; +use Symfony\Component\Config\Definition\Processor; /** * DoctrineExtension is an extension for the Doctrine DBAL and ORM library. @@ -32,23 +32,16 @@ class DoctrineExtension extends AbstractDoctrineExtension { public function load(array $configs, ContainerBuilder $container) { - $dbal = $orm = array(); - foreach ($configs as $config) { - if (isset($config['dbal'])) { - $dbal[] = $config['dbal']; - } - - if (isset($config['orm'])) { - $orm[] = $config['orm']; - } - } + $configuration = new Configuration(); + $processor = new Processor(); + $config = $processor->process($configuration->getConfigTree($container->getParameter('kernel.debug')), $configs); - if (!empty($dbal)) { - $this->dbalLoad($dbal, $container); + if (!empty($config['dbal'])) { + $this->dbalLoad($config['dbal'], $container); } - if (!empty($orm)) { - $this->ormLoad($orm, $container); + if (!empty($config['orm'])) { + $this->ormLoad($config['orm'], $container); } } @@ -62,183 +55,74 @@ public function load(array $configs, ContainerBuilder $container) * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ - protected function dbalLoad(array $configs, ContainerBuilder $container) + protected function dbalLoad(array $config, ContainerBuilder $container) { $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('dbal.xml'); - $config = $this->mergeDbalConfig($configs, $container); - $container->setAlias('database_connection', sprintf('doctrine.dbal.%s_connection', $config['default_connection'])); + $container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $config['default_connection']), false)); $container->setParameter('doctrine.dbal.default_connection', $config['default_connection']); $container->setParameter('doctrine.dbal.types', $config['types']); foreach ($config['connections'] as $name => $connection) { - $this->loadDbalConnection($connection, $container); + $this->loadDbalConnection($name, $connection, $container); } } - /** - * Merges a set of exclusive independent DBAL configurations into another. - * - * Beginning from the default settings this method acts as incremental merge - * of all the configurations that are passed through multiple environment - * and fallbacks for example config.yml + config_dev.yml - * - * @param array $configs - * @return array - */ - protected function mergeDbalConfig(array $configs, $container) - { - $supportedConnectionParams = array( - 'dbname' => 'dbname', - 'host' => 'host', - 'port' => 'port', - 'user' => 'user', - 'password' => 'password', - 'driver' => 'driver', - 'driver-class' => 'driverClass', // doctrine conv. - 'options' => 'driverOptions', // doctrine conv. - 'path' => 'path', - 'unix-socket' => 'unix_socket', - 'memory' => 'memory', - 'driver_class' => 'driverClass', // doctrine conv. - 'unix_socket' => 'unix_socket', - 'wrapper_class' => 'wrapperClass', // doctrine conv. - 'wrapper-class' => 'wrapperClass', // doctrine conv. - 'charset' => 'charset', - ); - $supportedContainerParams = array( - 'platform-service' => 'platform_service', - 'platform_service' => 'platform_service', - 'logging' => 'logging', - ); - $mergedConfig = array( - 'default_connection' => 'default', - 'types' => array(), - ); - $connectionDefaults = array( - 'driver' => array( - 'host' => 'localhost', - 'driver' => 'pdo_mysql', - 'driverOptions' => array(), - 'user' => 'root', - 'password' => null, - 'port' => null, - ), - 'container' => array( - 'logging' => (bool)$container->getParameter('doctrine.dbal.logging') - ), - ); - - foreach ($configs as $config) { - if (isset($config['default-connection'])) { - $mergedConfig['default_connection'] = $config['default-connection']; - } else if (isset($config['default_connection'])) { - $mergedConfig['default_connection'] = $config['default_connection']; - } - - // Handle DBAL Types - if (isset($config['types'])) { - if (isset($config['types']['type'][0])) { - $config['types'] = $config['types']['type']; - } - foreach ($config['types'] AS $name => $type) { - if (is_array($type) && isset($type['name']) && isset($type['class'])) { // xml case - $mergedConfig['types'][$type['name']] = $type['class']; - } else { // yml case - $mergedConfig['types'][$name] = $type; - } - } - } - } - - foreach ($configs as $config) { - if (isset($config['connections'])) { - $configConnections = $config['connections']; - if (isset($config['connections']['connection']) && isset($config['connections']['connection'][0])) { - $configConnections = $config['connections']['connection']; - } - } else { - $configConnections[$mergedConfig['default_connection']] = $config; - } - - foreach ($configConnections as $name => $connection) { - $connectionName = isset($connection['name']) ? $connection['name'] : $name; - if (!isset($mergedConfig['connections'][$connectionName])) { - $mergedConfig['connections'][$connectionName] = $connectionDefaults; - } - $mergedConfig['connections'][$connectionName]['name'] = $connectionName; - - foreach ($connection as $k => $v) { - if (isset($supportedConnectionParams[$k])) { - $mergedConfig['connections'][$connectionName]['driver'][$supportedConnectionParams[$k]] = $v; - } else if (isset($supportedContainerParams[$k])) { - $mergedConfig['connections'][$connectionName]['container'][$supportedContainerParams[$k]] = $v; - } - } - } - } - - return $mergedConfig; - } - /** * Loads a configured DBAL connection. * + * @param string $name The name of the connection * @param array $connection A dbal connection configuration. * @param ContainerBuilder $container A ContainerBuilder instance */ - protected function loadDbalConnection(array $connection, ContainerBuilder $container) + protected function loadDbalConnection($name, array $connection, ContainerBuilder $container) { - $containerDef = new Definition($container->getParameter('doctrine.dbal.configuration_class')); + $containerDef = new Definition('%doctrine.dbal.configuration_class%'); $containerDef->setPublic(false); - if (isset($connection['container']['logging']) && $connection['container']['logging']) { + if (isset($connection['logging']) && $connection['logging']) { $containerDef->addMethodCall('setSQLLogger', array(new Reference('doctrine.dbal.logger'))); + unset ($connection['logging']); } - $container->setDefinition(sprintf('doctrine.dbal.%s_connection.configuration', $connection['name']), $containerDef); - - $driverOptions = $connection['driver']; + $container->setDefinition(sprintf('doctrine.dbal.%s_connection.configuration', $name), $containerDef); $driverDef = new Definition('Doctrine\DBAL\Connection'); $driverDef->setFactoryService('doctrine.dbal.connection_factory'); $driverDef->setFactoryMethod('createConnection'); - $container->setDefinition(sprintf('doctrine.dbal.%s_connection', $connection['name']), $driverDef); + $container->setDefinition(sprintf('doctrine.dbal.%s_connection', $name), $driverDef); // event manager - $eventManagerId = sprintf('doctrine.dbal.%s_connection.event_manager', $connection['name']); + $eventManagerId = sprintf('doctrine.dbal.%s_connection.event_manager', $name); $eventManagerDef = new Definition('%doctrine.dbal.event_manager_class%'); $eventManagerDef->setPublic(false); $container->setDefinition($eventManagerId, $eventManagerDef); - if ($container->getParameter('doctrine.dbal.default_connection') == $connection['name']) { - $container->setAlias('doctrine.dbal.event_manager', new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $connection['name']), false)); - } - - if (isset($driverOptions['charset'])) { - if ( (isset($driverOptions['driver']) && stripos($driverOptions['driver'], 'mysql') !== false) || - (isset($driverOptions['driverClass']) && stripos($driverOptions['driverClass'], 'mysql') !== false)) { + if (isset($connection['charset'])) { + if ( (isset($connection['driver']) && stripos($connection['driver'], 'mysql') !== false) || + (isset($connection['driverClass']) && stripos($connection['driverClass'], 'mysql') !== false)) { $mysqlSessionInit = new Definition('%doctrine.dbal.events.mysql_session_init.class%'); - $mysqlSessionInit->setArguments(array($driverOptions['charset'])); + $mysqlSessionInit->setArguments(array($connection['charset'])); $mysqlSessionInit->setPublic(false); - $mysqlSessionInit->addTag(sprintf('doctrine.dbal.%s_event_subscriber', $connection['name'])); + $mysqlSessionInit->addTag(sprintf('doctrine.dbal.%s_event_subscriber', $name)); $container->setDefinition( - sprintf('doctrine.dbal.%s_connection.events.mysqlsessioninit', $connection['name']), + sprintf('doctrine.dbal.%s_connection.events.mysqlsessioninit', $name), $mysqlSessionInit ); - unset($driverOptions['charset']); + unset($connection['charset']); } } - if (isset($connection['container']['platform_service'])) { - $driverOptions['platform'] = new Reference($connection['container']['platform_service']); + if (isset($connection['platform_service'])) { + $connection['platform'] = new Reference($connection['platform_service']); + unset ($connection['platform_service']); } $driverDef->setArguments(array( - $driverOptions, - new Reference(sprintf('doctrine.dbal.%s_connection.configuration', $connection['name'])), - new Reference(sprintf('doctrine.dbal.%s_connection.event_manager', $connection['name'])) + $connection, + new Reference(sprintf('doctrine.dbal.%s_connection.configuration', $name)), + new Reference(sprintf('doctrine.dbal.%s_connection.event_manager', $name)) )); } @@ -252,149 +136,28 @@ protected function loadDbalConnection(array $connection, ContainerBuilder $conta * @param array $config An array of configuration settings * @param ContainerBuilder $container A ContainerBuilder instance */ - protected function ormLoad(array $configs, ContainerBuilder $container) + protected function ormLoad(array $config, ContainerBuilder $container) { $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('orm.xml'); - - $config = $this->mergeOrmConfig($configs, $container); - - $options = array('default_entity_manager', 'default_connection', 'auto_generate_proxy_classes'); + $options = array('default_entity_manager', 'auto_generate_proxy_classes', 'proxy_dir', 'proxy_namespace'); foreach ($options as $key) { $container->setParameter('doctrine.orm.'.$key, $config[$key]); } - foreach ($config['entity_managers'] as $entityManager) { - $this->loadOrmEntityManager($entityManager, $container); + $container->setAlias('doctrine.orm.entity_manager', sprintf('doctrine.orm.%s_entity_manager', $config['default_entity_manager'])); - if ($entityManager['name'] == $config['default_entity_manager']) { - $container->setAlias( - 'doctrine.orm.entity_manager', - sprintf('doctrine.orm.%s_entity_manager', $entityManager['name']) - ); - } + foreach ($config['entity_managers'] as $name => $entityManager) { + $entityManager['name'] = $name; + $this->loadOrmEntityManager($entityManager, $container); } $container->setParameter('doctrine.orm.entity_managers', array_keys($config['entity_managers'])); } - protected function mergeOrmConfig(array $configs, $container) - { - $supportedEntityManagerOptions = array( - 'metadata_cache_driver' => 'metadata_cache_driver', - 'query_cache_driver' => 'query_cache_driver', - 'result_cache_driver' => 'result_cache_driver', - 'class_metadata_factory_name' => 'class_metadata_factory_name', - 'metadata-cache-driver' => 'metadata_cache_driver', - 'query-cache-driver' => 'query_cache_driver', - 'result-cache-driver' => 'result_cache_driver', - 'class-metadata-factory-name' => 'class_metadata_factory_name', - 'connection' => 'connection' - ); - - $mergedConfig = array( - 'default_entity_manager' => 'default', - 'default_connection' => 'default', - 'auto_generate_proxy_classes' => false, - 'entity_managers' => array(), - ); - - $defaultManagerOptions = array( - 'proxy_dir' => $container->getParameter('doctrine.orm.proxy_dir'), - 'proxy_namespace' => $container->getParameter('doctrine.orm.proxy_namespace'), - 'auto_generate_proxy_classes' => false, - 'metadata_cache_driver' => $container->getParameter('doctrine.orm.metadata_cache_driver'), - 'query_cache_driver' => $container->getParameter('doctrine.orm.query_cache_driver'), - 'result_cache_driver' => $container->getParameter('doctrine.orm.result_cache_driver'), - 'configuration_class' => $container->getParameter('doctrine.orm.configuration_class'), - 'entity_manager_class' => $container->getParameter('doctrine.orm.entity_manager_class'), - 'class_metadata_factory_name' => $container->getParameter('doctrine.orm.class_metadata_factory_name'), - ); - - foreach ($configs as $config) { - if (isset($config['default-entity-manager'])) { - $mergedConfig['default_entity_manager'] = $config['default-entity-manager']; - } else if (isset($config['default_entity_manager'])) { - $mergedConfig['default_entity_manager'] = $config['default_entity_manager']; - } - if (isset($config['default-connection'])) { - $mergedConfig['default_connection'] = $config['default-connection']; - } else if (isset($config['default_connection'])) { - $mergedConfig['default_connection'] = $config['default_connection']; - } - if (isset($config['auto_generate_proxy_classes'])) { - $defaultManagerOptions['auto_generate_proxy_classes'] = $config['auto_generate_proxy_classes']; - } - if (isset($config['auto-generate-proxy-classes'])) { - $defaultManagerOptions['auto_generate_proxy_classes'] = $config['auto-generate-proxy-classes']; - } - } - $defaultManagerOptions['connection'] = $mergedConfig['default_connection']; - - foreach ($configs as $config) { - if (isset($config['entity-managers'])) { - $config['entity_managers'] = $config['entity-managers']; - } - - $entityManagers = array(); - if (isset($config['entity_managers'])) { - $configEntityManagers = $config['entity_managers']; - if (isset($config['entity_managers']['entity-manager'])) { - $config['entity_managers']['entity_manager'] = $config['entity_managers']['entity-manager']; - } - if (isset($config['entity_managers']['entity_manager']) && isset($config['entity_managers']['entity_manager'][0])) { - $configEntityManagers = $config['entity_managers']['entity_manager']; - } - - foreach ($configEntityManagers as $name => $entityManager) { - $name = isset($entityManager['name']) ? $entityManager['name'] : $name; - $entityManagers[$name] = $entityManager; - } - } else { - $entityManagers = array($mergedConfig['default_entity_manager'] => $config); - } - - foreach ($entityManagers as $name => $managerConfig) { - if (!isset($mergedConfig['entity_managers'][$name])) { - $mergedConfig['entity_managers'][$name] = $defaultManagerOptions; - } - - foreach ($managerConfig as $k => $v) { - if (isset($supportedEntityManagerOptions[$k])) { - $k = $supportedEntityManagerOptions[$k]; - $mergedConfig['entity_managers'][$name][$k] = $v; - } - } - $mergedConfig['entity_managers'][$name]['name'] = $name; - - if (isset($managerConfig['mappings'])) { - foreach ($managerConfig['mappings'] as $mappingName => $mappingConfig) { - if (!isset($mergedConfig['entity_managers'][$name]['mappings'][$mappingName])) { - $mergedConfig['entity_managers'][$name]['mappings'][$mappingName] = array(); - } - - if (is_array($mappingConfig)) { - foreach ($mappingConfig as $k => $v) { - $mergedConfig['entity_managers'][$name]['mappings'][$mappingName][$k] = $v; - } - } - } - } - } - } - - return $mergedConfig; - } - /** * Loads a configured ORM entity manager. * - * You need to be aware that ormLoad() can be called multiple times, which makes this method tricky to implement. - * There are two possible runtime scenarios: - * - * 1. If the EntityManager was defined before, override only the new calls to Doctrine\ORM\Configuration - * 2. If the EntityManager was not defined before, gather all the defaults for not specified options and set all the information. - * * @param array $entityManager A configured ORM entity manager. * @param ContainerBuilder $container A ContainerBuilder instance */ @@ -402,7 +165,7 @@ protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $ { $configServiceName = sprintf('doctrine.orm.%s_configuration', $entityManager['name']); - $ormConfigDef = new Definition('Doctrine\ORM\Configuration'); + $ormConfigDef = new Definition('%doctrine.orm.configuration_class%'); $ormConfigDef->setPublic(false); $container->setDefinition($configServiceName, $ormConfigDef); @@ -414,9 +177,9 @@ protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $ 'setQueryCacheImpl' => new Reference(sprintf('doctrine.orm.%s_query_cache', $entityManager['name'])), 'setResultCacheImpl' => new Reference(sprintf('doctrine.orm.%s_result_cache', $entityManager['name'])), 'setMetadataDriverImpl' => new Reference('doctrine.orm.'.$entityManager['name'].'_metadata_driver'), - 'setProxyDir' => $entityManager['proxy_dir'], - 'setProxyNamespace' => $entityManager['proxy_namespace'], - 'setAutoGenerateProxyClasses' => $entityManager['auto_generate_proxy_classes'], + 'setProxyDir' => '%doctrine.orm.proxy_dir%', + 'setProxyNamespace' => '%doctrine.orm.proxy_namespace%', + 'setAutoGenerateProxyClasses' => '%doctrine.orm.auto_generate_proxy_classes%', 'setClassMetadataFactoryName' => $entityManager['class_metadata_factory_name'], ); foreach ($uniqueMethods as $method => $arg) { @@ -424,10 +187,11 @@ protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $ } $entityManagerService = sprintf('doctrine.orm.%s_entity_manager', $entityManager['name']); - $connectionName = isset($entityManager['connection']) ? $entityManager['connection'] : $entityManager['name']; + $connectionId = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection', $entityManager['connection']) : 'database_connection'; + $eventManagerID = isset($entityManager['connection']) ? sprintf('doctrine.dbal.%s_connection.event_manager', $entityManager['connection']) : 'doctrine.dbal.event_manager'; $ormEmArgs = array( - new Reference(sprintf('doctrine.dbal.%s_connection', $connectionName)), + new Reference($connectionId), new Reference(sprintf('doctrine.orm.%s_configuration', $entityManager['name'])) ); $ormEmDef = new Definition('%doctrine.orm.entity_manager_class%', $ormEmArgs); @@ -438,7 +202,7 @@ protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $ $container->setAlias( sprintf('doctrine.orm.%s_entity_manager.event_manager', $entityManager['name']), - new Alias(sprintf('doctrine.dbal.%s_connection.event_manager', $connectionName), false) + new Alias($eventManagerID, false) ); } @@ -482,7 +246,7 @@ protected function loadOrmEntityManagerMappingInformation(array $entityManager, $this->loadMappingInformation($entityManager, $container); $this->registerMappingDrivers($entityManager, $container); - + $ormConfigDef->addMethodCall('setEntityNamespaces', array($this->aliasMap)); } @@ -534,23 +298,26 @@ protected function loadOrmEntityManagerCacheDriver(array $entityManager, Contain * Gets an entity manager cache driver definition for metadata, query and result caches. * * @param array $entityManager The array configuring an entity manager. - * @param string|array $cacheDriver The cache driver configuration. + * @param array $cacheDriver The cache driver configuration. * @param ContainerBuilder $container * @return Definition $cacheDef */ protected function getEntityManagerCacheDefinition(array $entityManager, $cacheDriver, ContainerBuilder $container) { - $type = is_array($cacheDriver) && isset($cacheDriver['type']) ? $cacheDriver['type'] : $cacheDriver; - if ('memcache' === $type) { - $cacheDef = new Definition('%doctrine.orm.cache.memcache_class%'); - $memcacheInstance = new Definition('%doctrine.orm.cache.memcache_instance_class%'); + if ('memcache' === $cacheDriver['type']) { + $memcacheClass = !empty ($cacheDriver['class']) ? $cacheDriver['class'] : '%doctrine.orm.cache.memcache_class%'; + $memcacheInstanceClass = !empty ($cacheDriver['instance_class']) ? $cacheDriver['instance_class'] : '%doctrine.orm.cache.memcache_instance_class%'; + $memcacheHost = !empty ($cacheDriver['host']) ? $cacheDriver['host'] : '%doctrine.orm.cache.memcache_host%'; + $memcachePort = !empty ($cacheDriver['port']) ? $cacheDriver['port'] : '%doctrine.orm.cache.memcache_port%'; + $cacheDef = new Definition($memcacheClass); + $memcacheInstance = new Definition($memcacheInstanceClass); $memcacheInstance->addMethodCall('connect', array( - '%doctrine.orm.cache.memcache_host%', '%doctrine.orm.cache.memcache_port%' + $memcacheHost, $memcachePort )); $container->setDefinition(sprintf('doctrine.orm.%s_memcache_instance', $entityManager['name']), $memcacheInstance); $cacheDef->addMethodCall('setMemcache', array(new Reference(sprintf('doctrine.orm.%s_memcache_instance', $entityManager['name'])))); - } else if (in_array($type, array('apc', 'array', 'xcache'))) { - $cacheDef = new Definition('%'.sprintf('doctrine.orm.cache.%s_class', $type).'%'); + } else if (in_array($cacheDriver['type'], array('apc', 'array', 'xcache'))) { + $cacheDef = new Definition('%'.sprintf('doctrine.orm.cache.%s_class', $cacheDriver['type']).'%'); } $cacheDef->setPublic(false); $cacheDef->addMethodCall('setNamespace', array('sf2orm_'.$entityManager['name'])); diff --git a/src/Symfony/Bundle/DoctrineBundle/Resources/config/schema/doctrine-1.0.xsd b/src/Symfony/Bundle/DoctrineBundle/Resources/config/schema/doctrine-1.0.xsd index da8b1039437e8..eed26fef53bc9 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Resources/config/schema/doctrine-1.0.xsd +++ b/src/Symfony/Bundle/DoctrineBundle/Resources/config/schema/doctrine-1.0.xsd @@ -33,25 +33,13 @@ - - - - - - - - - - - + - - - - - + + + @@ -73,18 +61,12 @@ - - - - - - - - - + + + - + @@ -106,17 +88,11 @@ - - - - - - - - + + - + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php index 9b3c8d4194a00..ee125296f8e71 100755 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/AbstractDoctrineExtensionTest.php @@ -39,19 +39,14 @@ public function testDbalLoad() { $container = $this->getContainer(); $loader = new DoctrineExtension(); - $loader->load(array(array('dbal' => array('password' => 'foo'))), $container); - $loader->load(array(array(), array('dbal' => array('default_connection' => 'foo')), array()), $container); + $loader->load(array(array('dbal' => array('password' => 'foo')), array(), array('dbal' => array('default_connection' => 'foo')), array()), $container); $arguments = $container->getDefinition('doctrine.dbal.default_connection')->getArguments(); $config = $arguments[0]; $this->assertEquals('foo', $config['password']); $this->assertEquals('root', $config['user']); - - $loader->load(array(array('dbal' => array('user' => 'foo'))), $container); - $this->assertEquals('foo', $config['password']); - $this->assertEquals('root', $config['user']); } public function testDbalLoadFromXmlMultipleConnections() @@ -117,8 +112,7 @@ public function testDependencyInjectionConfigurationDefaults() $container = $this->getContainer(); $loader = new DoctrineExtension(); - $loader->load(array(array('dbal' => array())), $container); - $loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container); + $loader->load(array(array('dbal' => array(), 'orm' => array('mappings' => array('YamlBundle' => array())))), $container); $this->assertFalse($container->getParameter('doctrine.orm.auto_generate_proxy_classes')); $this->assertEquals('Doctrine\ORM\Configuration', $container->getParameter('doctrine.orm.configuration_class')); @@ -143,8 +137,8 @@ public function testDependencyInjectionConfigurationDefaults() 'mappings' => array('YamlBundle' => array()), ); - $loader->load(array(array('dbal' => array())), $container); - $loader->load(array('orm' => $config), $container); + $container = $this->getContainer(); + $loader->load(array(array('dbal' => array(), 'orm' => $config)), $container); $definition = $container->getDefinition('doctrine.dbal.default_connection'); $this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass()); @@ -166,7 +160,7 @@ public function testDependencyInjectionConfigurationDefaults() $arguments = $definition->getArguments(); $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]); - $this->assertEquals('doctrine.dbal.default_connection', (string) $arguments[0]); + $this->assertEquals('database_connection', (string) $arguments[0]); $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]); $this->assertEquals('doctrine.orm.default_configuration', (string) $arguments[1]); @@ -192,8 +186,7 @@ public function testSingleEntityManagerConfiguration() $container = $this->getContainer(); $loader = new DoctrineExtension(); - $loader->load(array(array('dbal' => array())), $container); - $loader->load(array(array('orm' => array())), $container); + $loader->load(array(array('dbal' => array(), 'orm' => array('mappings' => array('YamlBundle' => array())))), $container); $definition = $container->getDefinition('doctrine.dbal.default_connection'); $this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass()); @@ -205,7 +198,7 @@ public function testSingleEntityManagerConfiguration() $this->assertArrayHasKey('doctrine.orm.entity_manager', $definition->getTags()); $this->assertDICConstructorArguments($definition, array( - new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration') + new Reference('database_connection'), new Reference('doctrine.orm.default_configuration') )); } @@ -215,9 +208,6 @@ public function testLoadSimpleSingleConnection() $loader = new DoctrineExtension(); $container->registerExtension($loader); - $loader->load(array(array('dbal' => array())), $container); - $loader->load(array(array('orm' => array())), $container); - $this->loadFromFile($container, 'orm_service_simple_single_entity_manager'); $container->getCompilerPassConfig()->setOptimizationPasses(array()); @@ -235,6 +225,7 @@ public function testLoadSimpleSingleConnection() 'user' => 'root', 'password' => null, 'port' => null, + 'logging' => false, ), new Reference('doctrine.dbal.default_connection.configuration'), new Reference('doctrine.dbal.default_connection.event_manager') @@ -247,7 +238,7 @@ public function testLoadSimpleSingleConnection() $this->assertArrayHasKey('doctrine.orm.entity_manager', $definition->getTags()); $this->assertDICConstructorArguments($definition, array( - new Reference('doctrine.dbal.default_connection'), new Reference('doctrine.orm.default_configuration') + new Reference('database_connection'), new Reference('doctrine.orm.default_configuration') )); } @@ -276,6 +267,8 @@ public function testLoadSingleConnection() 'password' => 'sqlite_s3cr3t', 'dbname' => 'sqlite_db', 'memory' => true, + 'logging' => false, + 'charset' => 'UTF-8' ), new Reference('doctrine.dbal.default_connection.configuration'), new Reference('doctrine.dbal.default_connection.event_manager') @@ -314,9 +307,9 @@ public function testLoadMultipleConnections() $this->assertEquals('doctrine.dbal.conn1_connection.configuration', (string) $args[1]); $this->assertEquals('doctrine.dbal.conn1_connection.event_manager', (string) $args[2]); - $this->assertEquals('doctrine.orm.dm2_entity_manager', (string) $container->getAlias('doctrine.orm.entity_manager')); + $this->assertEquals('doctrine.orm.em2_entity_manager', (string) $container->getAlias('doctrine.orm.entity_manager')); - $definition = $container->getDefinition('doctrine.orm.dm1_entity_manager'); + $definition = $container->getDefinition('doctrine.orm.em1_entity_manager'); $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getClass()); $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getFactoryClass()); $this->assertEquals('create', $definition->getFactoryMethod()); @@ -326,7 +319,7 @@ public function testLoadMultipleConnections() $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]); $this->assertEquals('doctrine.dbal.conn1_connection', (string) $arguments[0]); $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]); - $this->assertEquals('doctrine.orm.dm1_configuration', (string) $arguments[1]); + $this->assertEquals('doctrine.orm.em1_configuration', (string) $arguments[1]); $definition = $container->getDefinition('doctrine.dbal.conn2_connection'); $this->assertEquals('Doctrine\DBAL\Connection', $definition->getClass()); @@ -338,7 +331,7 @@ public function testLoadMultipleConnections() $this->assertEquals('doctrine.dbal.conn2_connection.configuration', (string) $args[1]); $this->assertEquals('doctrine.dbal.conn2_connection.event_manager', (string) $args[2]); - $definition = $container->getDefinition('doctrine.orm.dm2_entity_manager'); + $definition = $container->getDefinition('doctrine.orm.em2_entity_manager'); $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getClass()); $this->assertEquals('%doctrine.orm.entity_manager_class%', $definition->getFactoryClass()); $this->assertEquals('create', $definition->getFactoryMethod()); @@ -348,15 +341,15 @@ public function testLoadMultipleConnections() $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[0]); $this->assertEquals('doctrine.dbal.conn2_connection', (string) $arguments[0]); $this->assertInstanceOf('Symfony\Component\DependencyInjection\Reference', $arguments[1]); - $this->assertEquals('doctrine.orm.dm2_configuration', (string) $arguments[1]); + $this->assertEquals('doctrine.orm.em2_configuration', (string) $arguments[1]); - $definition = $container->getDefinition('doctrine.orm.dm1_metadata_cache'); + $definition = $container->getDefinition('doctrine.orm.em1_metadata_cache'); $this->assertEquals('%doctrine.orm.cache.xcache_class%', $definition->getClass()); - $definition = $container->getDefinition('doctrine.orm.dm1_query_cache'); + $definition = $container->getDefinition('doctrine.orm.em1_query_cache'); $this->assertEquals('%doctrine.orm.cache.array_class%', $definition->getClass()); - $definition = $container->getDefinition('doctrine.orm.dm1_result_cache'); + $definition = $container->getDefinition('doctrine.orm.em1_result_cache'); $this->assertEquals('%doctrine.orm.cache.array_class%', $definition->getClass()); } @@ -365,7 +358,6 @@ public function testBundleEntityAliases() $container = $this->getContainer(); $loader = new DoctrineExtension(); - $loader->load(array(array()), $container); $loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container); $definition = $container->getDefinition('doctrine.orm.default_configuration'); @@ -379,7 +371,6 @@ public function testOverwriteEntityAliases() $container = $this->getContainer(); $loader = new DoctrineExtension(); - $loader->load(array(array()), $container); $loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array('alias' => 'yml'))))), $container); $definition = $container->getDefinition('doctrine.orm.default_configuration'); @@ -393,7 +384,6 @@ public function testYamlBundleMappingDetection() $container = $this->getContainer('YamlBundle'); $loader = new DoctrineExtension(); - $loader->load(array(array()), $container); $loader->load(array(array('orm' => array('mappings' => array('YamlBundle' => array())))), $container); $definition = $container->getDefinition('doctrine.orm.default_metadata_driver'); @@ -408,7 +398,6 @@ public function testXmlBundleMappingDetection() $container = $this->getContainer('XmlBundle'); $loader = new DoctrineExtension(); - $loader->load(array(array()), $container); $loader->load(array(array('orm' => array('mappings' => array('XmlBundle' => array())))), $container); $definition = $container->getDefinition('doctrine.orm.default_metadata_driver'); @@ -423,7 +412,6 @@ public function testAnnotationsBundleMappingDetection() $container = $this->getContainer('AnnotationsBundle'); $loader = new DoctrineExtension(); - $loader->load(array(array()), $container); $loader->load(array(array('orm' => array('mappings' => array('AnnotationsBundle' => array())))), $container); $definition = $container->getDefinition('doctrine.orm.default_metadata_driver'); @@ -438,7 +426,6 @@ public function testOrmMergeConfigs() $container = $this->getContainer(array('XmlBundle', 'AnnotationsBundle')); $loader = new DoctrineExtension(); - $loader->load(array(array()), $container); $loader->load(array(array('orm' => array( 'auto_generate_proxy_classes' => true, 'mappings' => array('AnnotationsBundle' => array()) @@ -459,7 +446,15 @@ public function testOrmMergeConfigs() )); $configDef = $container->getDefinition('doctrine.orm.default_configuration'); - $this->assertDICDefinitionMethodCallOnce($configDef, 'setAutoGenerateProxyClasses', array( false )); + $this->assertDICDefinitionMethodCallOnce($configDef, 'setAutoGenerateProxyClasses'); + + $calls = $configDef->getMethodCalls(); + foreach ($calls as $call) { + if ($call[0] == 'setAutoGenerateProxyClasses') { + $this->assertFalse($container->getParameterBag()->resolveValue($call[1][0])); + break; + } + } } public function testEntityManagerMetadataCacheDriverConfiguration() @@ -474,10 +469,10 @@ public function testEntityManagerMetadataCacheDriverConfiguration() $container->getCompilerPassConfig()->setRemovingPasses(array()); $container->compile(); - $definition = $container->getDefinition('doctrine.orm.dm1_metadata_cache'); + $definition = $container->getDefinition('doctrine.orm.em1_metadata_cache'); $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.xcache_class%'); - $definition = $container->getDefinition('doctrine.orm.dm2_metadata_cache'); + $definition = $container->getDefinition('doctrine.orm.em2_metadata_cache'); $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.apc_class%'); } @@ -494,15 +489,15 @@ public function testEntityManagerMemcacheMetadataCacheDriverConfiguration() $container->compile(); $definition = $container->getDefinition('doctrine.orm.default_metadata_cache'); - $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.memcache_class%'); + $this->assertDICDefinitionClass($definition, 'Doctrine\Common\Cache\MemcacheCache'); $this->assertDICDefinitionMethodCallOnce($definition, 'setMemcache', array(new Reference('doctrine.orm.default_memcache_instance')) ); $definition = $container->getDefinition('doctrine.orm.default_memcache_instance'); - $this->assertDICDefinitionClass($definition, '%doctrine.orm.cache.memcache_instance_class%'); + $this->assertDICDefinitionClass($definition, 'Memcache'); $this->assertDICDefinitionMethodCallOnce($definition, 'connect', array( - '%doctrine.orm.cache.memcache_host%', '%doctrine.orm.cache.memcache_port%' + 'localhost', '11211' )); } @@ -557,17 +552,17 @@ public function testSingleEntityManagerMultipleMappingBundleDefinitions() $annDef = $container->getDefinition('doctrine.orm.default_annotation_metadata_driver'); $this->assertDICConstructorArguments($annDef, array( new Reference('doctrine.orm.metadata.annotation_reader'), - array(__DIR__ . '/Fixtures/Bundles/AnnotationsBundle/Entity') + array(__DIR__ .DIRECTORY_SEPARATOR.'Fixtures'.DIRECTORY_SEPARATOR.'Bundles'.DIRECTORY_SEPARATOR.'AnnotationsBundle'.DIRECTORY_SEPARATOR.'Entity') )); $ymlDef = $container->getDefinition('doctrine.orm.default_yml_metadata_driver'); $this->assertDICConstructorArguments($ymlDef, array( - array(__DIR__ . '/Fixtures/Bundles/YamlBundle/Resources/config/doctrine/metadata') + array(__DIR__ .DIRECTORY_SEPARATOR.'Fixtures'.DIRECTORY_SEPARATOR.'Bundles'.DIRECTORY_SEPARATOR.'YamlBundle'.DIRECTORY_SEPARATOR.'Resources'.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'doctrine'.DIRECTORY_SEPARATOR.'metadata') )); $xmlDef = $container->getDefinition('doctrine.orm.default_xml_metadata_driver'); $this->assertDICConstructorArguments($xmlDef, array( - array(__DIR__ . '/Fixtures/Bundles/XmlBundle/Resources/config/doctrine/metadata') + array(__DIR__ .DIRECTORY_SEPARATOR.'Fixtures'.DIRECTORY_SEPARATOR.'Bundles'.DIRECTORY_SEPARATOR.'XmlBundle'.DIRECTORY_SEPARATOR.'Resources'.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'doctrine'.DIRECTORY_SEPARATOR.'metadata') )); } @@ -606,17 +601,17 @@ public function testMultipleEntityManagersMappingBundleDefinitions() $annDef = $container->getDefinition('doctrine.orm.em1_annotation_metadata_driver'); $this->assertDICConstructorArguments($annDef, array( new Reference('doctrine.orm.metadata.annotation_reader'), - array(__DIR__ . '/Fixtures/Bundles/AnnotationsBundle/Entity') + array(__DIR__ .DIRECTORY_SEPARATOR.'Fixtures'.DIRECTORY_SEPARATOR.'Bundles'.DIRECTORY_SEPARATOR.'AnnotationsBundle'.DIRECTORY_SEPARATOR.'Entity') )); $ymlDef = $container->getDefinition('doctrine.orm.em2_yml_metadata_driver'); $this->assertDICConstructorArguments($ymlDef, array( - array(__DIR__ . '/Fixtures/Bundles/YamlBundle/Resources/config/doctrine/metadata') + array(__DIR__ .DIRECTORY_SEPARATOR.'Fixtures'.DIRECTORY_SEPARATOR.'Bundles'.DIRECTORY_SEPARATOR.'YamlBundle'.DIRECTORY_SEPARATOR.'Resources'.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'doctrine'.DIRECTORY_SEPARATOR.'metadata') )); $xmlDef = $container->getDefinition('doctrine.orm.em2_xml_metadata_driver'); $this->assertDICConstructorArguments($xmlDef, array( - array(__DIR__ . '/Fixtures/Bundles/XmlBundle/Resources/config/doctrine/metadata') + array(__DIR__ .DIRECTORY_SEPARATOR.'Fixtures'.DIRECTORY_SEPARATOR.'Bundles'.DIRECTORY_SEPARATOR.'XmlBundle'.DIRECTORY_SEPARATOR.'Resources'.DIRECTORY_SEPARATOR.'config'.DIRECTORY_SEPARATOR.'doctrine'.DIRECTORY_SEPARATOR.'metadata') )); } @@ -625,7 +620,6 @@ public function testAnnotationsBundleMappingDetectionWithVendorNamespace() $container = $this->getContainer('AnnotationsBundle', 'Vendor'); $loader = new DoctrineExtension(); - $loader->load(array(array()), $container); $loader->load(array(array('orm' => array('mappings' => array('AnnotationsBundle' => array())))), $container); $calls = $container->getDefinition('doctrine.orm.default_metadata_driver')->getMethodCalls(); @@ -664,6 +658,7 @@ protected function getContainer($bundles = 'YamlBundle', $vendor = null) } return new ContainerBuilder(new ParameterBag(array( + 'kernel.debug' => false, 'kernel.bundles' => $map, 'kernel.cache_dir' => sys_get_temp_dir(), 'kernel.root_dir' => __DIR__ . "/../../../../../" // src dir diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_multiple_connections.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_multiple_connections.xml index f1c1edfb47250..acfa896a4027d 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_multiple_connections.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_multiple_connections.xml @@ -7,29 +7,27 @@ http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"> - - - - - - + + + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_single_connection.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_single_connection.xml index 9fff660687976..fa6392e192ba1 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_single_connection.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_service_single_connection.xml @@ -7,15 +7,13 @@ http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"> - - - - + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_types.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_types.xml index 9593a8a8038c9..7bbad12c7fb80 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_types.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/dbal_types.xml @@ -7,10 +7,9 @@ http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"> - - - - + + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml index e8f6e95fa5df5..b8270feb268d2 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml @@ -10,6 +10,8 @@ + > + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_multiple_em_bundle_mappings.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_multiple_em_bundle_mappings.xml index f1700ff8f355b..58569052ea4c4 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_multiple_em_bundle_mappings.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_multiple_em_bundle_mappings.xml @@ -7,23 +7,17 @@ http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd"> - - - - - - - - - - - - - - + + + + + + + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml index 3eff826f6882e..9c3b840c4ef02 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml @@ -11,30 +11,30 @@ - - - - - + + + - - - - - + + + + + + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_simple_single_entity_manager.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_simple_single_entity_manager.xml index 274b5801ef40d..e79ab114cc8bb 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_simple_single_entity_manager.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_simple_single_entity_manager.xml @@ -15,6 +15,7 @@ 11211 Memcache + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml index eadd397673e10..d73955f9eeebf 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml @@ -11,34 +11,29 @@ - - - - + + - - - - Doctrine\Common\Cache\MemcacheCache - localhost - 11211 - Memcache - - - + + + Doctrine\Common\Cache\MemcacheCache + localhost + 11211 + Memcache + + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_single_em_bundle_mappings.xml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_single_em_bundle_mappings.xml index 42e5934dbb373..a247fac1b3d45 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_single_em_bundle_mappings.xml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/xml/orm_single_em_bundle_mappings.xml @@ -8,14 +8,12 @@ - - - - - + + + diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_multiple_connections.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_multiple_connections.yml index 491b2838b2bcc..a01101d265e7d 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_multiple_connections.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_multiple_connections.yml @@ -1,5 +1,6 @@ doctrine: dbal: + default_connection: mysql connections: mysql: dbname: mysql_db diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_single_connection.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_single_connection.yml index 60d093fe4bfe1..1b15fc376e909 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_single_connection.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_service_single_connection.yml @@ -1,5 +1,6 @@ doctrine: dbal: + default_connection: mysql connections: mysql: dbname: mysql_db diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_types.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_types.yml index e0486ac644000..1e86dc462e4aa 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_types.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/dbal_types.yml @@ -1,4 +1,7 @@ doctrine: dbal: + default_connection: default types: - test: Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType \ No newline at end of file + test: Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType + connections: + default: ~ diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml index e0362aedf33bf..3a7b5074943c6 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml @@ -2,3 +2,5 @@ doctrine: orm: auto_generate_proxy_classes: false metadata_cache_driver: apc + mappings: + YamlBundle: ~ diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_multiple_em_bundle_mappings.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_multiple_em_bundle_mappings.yml index e7aa4ca8d6525..9e9c89add81d5 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_multiple_em_bundle_mappings.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_multiple_em_bundle_mappings.yml @@ -1,5 +1,6 @@ doctrine: orm: + default_entity_manager: em2 entity_managers: em1: mappings: diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml index 6a345b6b560c9..31b9cc1aabcfd 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml @@ -3,6 +3,7 @@ parameters: doctrine: dbal: + default_connection: conn1 connections: conn1: driver: pdo_sqlite @@ -18,13 +19,16 @@ doctrine: memory: true orm: - default_entity_manager: dm2 - default_connection: conn1 + default_entity_manager: em2 auto_generate_proxy_classes: true entity_managers: - dm1: + em1: metadata_cache_driver: xcache connection: conn1 - dm2: + mappings: + YamlBundle: ~ + em2: metadata_cache_driver: apc connection: conn2 + mappings: + YamlBundle: ~ diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_simple_single_entity_manager.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_simple_single_entity_manager.yml index 23572eb710da9..94cde3fce1bfd 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_simple_single_entity_manager.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_simple_single_entity_manager.yml @@ -1,7 +1,8 @@ doctrine: dbal: ~ - orm: + mappings: + YamlBundle: ~ metadata_cache_driver: type: memcache class: Doctrine\Common\Cache\MemcacheCache diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml index 8be43fdeda8a4..d91ff393be99f 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml @@ -1,5 +1,6 @@ doctrine: dbal: + default_connection: default connections: default: driver: pdo_sqlite @@ -9,14 +10,14 @@ doctrine: memory: true orm: - metadata_cache_driver: apc default_entity_manager: dm2 - default_connection: conn1 proxy_namespace: Proxies auto_generate_proxy_classes: true entity_managers: default: connection: default + mappings: + YamlBundle: ~ metadata_cache_driver: type: memcache class: Doctrine\Common\Cache\MemcacheCache diff --git a/src/Symfony/Bundle/DoctrineBundle/Tests/TestCase.php b/src/Symfony/Bundle/DoctrineBundle/Tests/TestCase.php index 8f183c9861dfb..040630c04b77b 100644 --- a/src/Symfony/Bundle/DoctrineBundle/Tests/TestCase.php +++ b/src/Symfony/Bundle/DoctrineBundle/Tests/TestCase.php @@ -50,31 +50,33 @@ protected function createTestEntityManager($paths = array()) public function createYamlBundleTestContainer() { $container = new ContainerBuilder(new ParameterBag(array( + 'kernel.debug' => false, 'kernel.bundles' => array('YamlBundle' => 'Fixtures\Bundles\YamlBundle\YamlBundle'), 'kernel.cache_dir' => sys_get_temp_dir(), 'kernel.root_dir' => __DIR__ . "/../../../../" // src dir ))); $loader = new DoctrineExtension(); $container->registerExtension($loader); - $loader->load(array(array('dbal' => array( - 'connections' => array( - 'default' => array( - 'driver' => 'pdo_mysql', - 'charset' => 'UTF-8', - 'platform-service' => 'my.platform', - ) - ), - 'types' => array( - 'test' => 'Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType', - ), - ))), $container); - $loader->load(array( - array('orm' => array( + $loader->load(array(array( + 'dbal' => array( + 'connections' => array( + 'default' => array( + 'driver' => 'pdo_mysql', + 'charset' => 'UTF-8', + 'platform-service' => 'my.platform', + ) + ), + 'default_connection' => 'default', + 'types' => array( + 'test' => 'Symfony\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType', + ), + ), 'orm' => array( 'mappings' => array('YamlBundle' => array( 'type' => 'yml', 'dir' => __DIR__ . "/DependencyInjection/Fixtures/Bundles/YamlBundle/Resources/config/doctrine/metadata/orm", 'prefix' => 'Fixtures\Bundles\YamlBundle', - ))))), $container); + ))) + )), $container); $container->setDefinition('my.platform', new \Symfony\Component\DependencyInjection\Definition('Doctrine\DBAL\Platforms\MySqlPlatform')); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy