diff --git a/UPGRADE-4.4.md b/UPGRADE-4.4.md index 7d19467d8044..f78668cd8bd9 100644 --- a/UPGRADE-4.4.md +++ b/UPGRADE-4.4.md @@ -72,6 +72,8 @@ DoctrineBridge * Deprecated passing an `IdReader` to the `DoctrineChoiceLoader` when the query cannot be optimized with single id field. * Deprecated not passing an `IdReader` to the `DoctrineChoiceLoader` when the query can be optimized with single id field. * Deprecated `RegistryInterface`, use `Doctrine\Common\Persistence\ManagerRegistry`. + * Added a new `getMetadataDriverClass` method to replace class parameters in `AbstractDoctrineExtension`. This method + will be abstract in Symfony 5 and must be declared in extending classes. Filesystem ---------- diff --git a/UPGRADE-5.0.md b/UPGRADE-5.0.md index c6da522603b1..958b6fa8c645 100644 --- a/UPGRADE-5.0.md +++ b/UPGRADE-5.0.md @@ -122,6 +122,7 @@ DoctrineBridge * Passing an `IdReader` to the `DoctrineChoiceLoader` when the query cannot be optimized with single id field will throw an exception, pass `null` instead * Not passing an `IdReader` to the `DoctrineChoiceLoader` when the query can be optimized with single id field will not apply any optimization * The `RegistryInterface` has been removed. + * Added a new `getMetadataDriverClass` method in `AbstractDoctrineExtension` to replace class parameters. DomCrawler ---------- diff --git a/src/Symfony/Bridge/Doctrine/CHANGELOG.md b/src/Symfony/Bridge/Doctrine/CHANGELOG.md index 434446c99266..8265e9e68270 100644 --- a/src/Symfony/Bridge/Doctrine/CHANGELOG.md +++ b/src/Symfony/Bridge/Doctrine/CHANGELOG.md @@ -7,6 +7,7 @@ CHANGELOG * added `DoctrineClearEntityManagerMiddleware` * deprecated `RegistryInterface`, use `Doctrine\Common\Persistence\ManagerRegistry` * added support for invokable event listeners + * added `getMetadataDriverClass` method to deprecate class parameters in service configuration files 4.3.0 ----- diff --git a/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php b/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php index 61c6609c764f..dc80ff76fef0 100644 --- a/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php +++ b/src/Symfony/Bridge/Doctrine/DependencyInjection/AbstractDoctrineExtension.php @@ -178,7 +178,7 @@ protected function registerMappingDrivers($objectManager, ContainerBuilder $cont if ($container->hasDefinition($this->getObjectManagerElementName($objectManager['name'].'_metadata_driver'))) { $chainDriverDef = $container->getDefinition($this->getObjectManagerElementName($objectManager['name'].'_metadata_driver')); } else { - $chainDriverDef = new Definition('%'.$this->getObjectManagerElementName('metadata.driver_chain.class%')); + $chainDriverDef = new Definition($this->getMetadataDriverClass('driver_chain')); $chainDriverDef->setPublic(false); } @@ -194,12 +194,12 @@ protected function registerMappingDrivers($objectManager, ContainerBuilder $cont } $mappingDriverDef->setArguments($args); } elseif ('annotation' == $driverType) { - $mappingDriverDef = new Definition('%'.$this->getObjectManagerElementName('metadata.'.$driverType.'.class%'), [ + $mappingDriverDef = new Definition($this->getMetadataDriverClass($driverType), [ new Reference($this->getObjectManagerElementName('metadata.annotation_reader')), array_values($driverPaths), ]); } else { - $mappingDriverDef = new Definition('%'.$this->getObjectManagerElementName('metadata.'.$driverType.'.class%'), [ + $mappingDriverDef = new Definition($this->getMetadataDriverClass($driverType), [ array_values($driverPaths), ]); } @@ -434,6 +434,16 @@ abstract protected function getMappingResourceConfigDirectory(); */ abstract protected function getMappingResourceExtension(); + /** + * The class name used by the various mapping drivers. + */ + protected function getMetadataDriverClass(string $driverType): string + { + @trigger_error(sprintf('Not declaring the "%s" method in class "%s" is deprecated since Symfony 4.4. This method will be abstract in Symfony 5.0.', __METHOD__, static::class), E_USER_DEPRECATED); + + return '%'.$this->getObjectManagerElementName('metadata.'.$driverType.'.class%'); + } + /** * Search for a manager that is declared as 'auto_mapping' = true. *
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: