diff --git a/composer.json b/composer.json
index 1c4752519..f163d7f84 100644
--- a/composer.json
+++ b/composer.json
@@ -45,7 +45,7 @@
"require-dev": {
"doctrine/coding-standard": "^13",
"doctrine/deprecations": "^1.0",
- "doctrine/orm": "^3.1",
+ "doctrine/orm": "^3.4.4",
"friendsofphp/proxy-manager-lts": "^1.0",
"phpstan/phpstan": "2.1.1",
"phpstan/phpstan-phpunit": "2.0.3",
diff --git a/config/orm.php b/config/orm.php
index 7b03fec3f..ffdd96bf4 100644
--- a/config/orm.php
+++ b/config/orm.php
@@ -42,7 +42,6 @@
use Doctrine\Persistence\Mapping\Driver\PHPDriver;
use Doctrine\Persistence\Mapping\Driver\StaticPHPDriver;
use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver;
-use Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer;
use Symfony\Bridge\Doctrine\Form\DoctrineOrmTypeGuesser;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Bridge\Doctrine\SchemaListener\DoctrineDbalCacheAdapterSchemaListener;
@@ -70,9 +69,6 @@
->set('doctrine.orm.metadata.staticphp.class', StaticPHPDriver::class)
->set('doctrine.orm.metadata.attribute.class', AttributeDriver::class)
- // cache warmer
- ->set('doctrine.orm.proxy_cache_warmer.class', ProxyCacheWarmer::class)
-
// form field factory guesser
->set('form.type_guesser.doctrine.class', DoctrineOrmTypeGuesser::class)
@@ -114,12 +110,6 @@
->alias(EntityManagerInterface::class, 'doctrine.orm.entity_manager')
- ->set('doctrine.orm.proxy_cache_warmer', param('doctrine.orm.proxy_cache_warmer.class'))
- ->tag('kernel.cache_warmer')
- ->args([
- service('doctrine'),
- ])
-
->set('form.type_guesser.doctrine', param('form.type_guesser.doctrine.class'))
->tag('form.type_guesser')
->args([
diff --git a/config/schema/doctrine-1.0.xsd b/config/schema/doctrine-1.0.xsd
index 12ba45571..b5a882cca 100644
--- a/config/schema/doctrine-1.0.xsd
+++ b/config/schema/doctrine-1.0.xsd
@@ -146,9 +146,6 @@
-
-
-
diff --git a/docs/en/configuration.rst b/docs/en/configuration.rst
index e8e5c0114..6d821c60e 100644
--- a/docs/en/configuration.rst
+++ b/docs/en/configuration.rst
@@ -213,12 +213,9 @@ Configuration Reference
orm:
default_entity_manager: ~ # The first defined is used if not set
- # Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED"
- auto_generate_proxy_classes: false
- proxy_dir: "%kernel.cache_dir%/doctrine/orm/Proxies"
- proxy_namespace: Proxies
- # Enables the new native implementation of PHP lazy objects instead of generated proxies
- enable_native_lazy_objects: false
+ # No-op, will be deprecated and removed in the future
+ enable_native_lazy_objects: true
+
identity_generation_preferences:
Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity
@@ -494,13 +491,7 @@ Configuration Reference
-
-
+
-
-
-
-
src
diff --git a/src/CacheWarmer/DoctrineMetadataCacheWarmer.php b/src/CacheWarmer/DoctrineMetadataCacheWarmer.php
index 7bb9afe97..f16de178a 100644
--- a/src/CacheWarmer/DoctrineMetadataCacheWarmer.php
+++ b/src/CacheWarmer/DoctrineMetadataCacheWarmer.php
@@ -19,12 +19,9 @@ public function __construct(
parent::__construct($phpArrayFile);
}
- /**
- * It must not be optional because it should be called before ProxyCacheWarmer which is not optional.
- */
public function isOptional(): bool
{
- return false;
+ return true;
}
protected function doWarmUp(string $cacheDir, ArrayAdapter $arrayAdapter, string|null $buildDir = null): bool
diff --git a/src/DependencyInjection/Configuration.php b/src/DependencyInjection/Configuration.php
index ce31e477d..5d5b2b0ac 100644
--- a/src/DependencyInjection/Configuration.php
+++ b/src/DependencyInjection/Configuration.php
@@ -6,9 +6,7 @@
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\ClassMetadataFactory;
-use Doctrine\ORM\Proxy\ProxyFactory;
use InvalidArgumentException;
-use ReflectionClass;
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
@@ -27,16 +25,11 @@
use function implode;
use function in_array;
use function is_array;
-use function is_bool;
-use function is_int;
use function is_string;
use function key;
use function reset;
use function sprintf;
-use function strlen;
-use function strpos;
use function strtoupper;
-use function substr;
use function trigger_deprecation;
/**
@@ -417,10 +410,7 @@ private function addOrmSection(ArrayNodeDefinition $node): void
// Key that should not be rewritten to the entity-manager config
$excludedKeys = [
'default_entity_manager' => true,
- 'auto_generate_proxy_classes' => true,
'enable_native_lazy_objects' => true,
- 'proxy_dir' => true,
- 'proxy_namespace' => true,
'resolve_target_entities' => true,
'resolve_target_entity' => true,
'controller_resolver' => true,
@@ -464,46 +454,9 @@ private function addOrmSection(ArrayNodeDefinition $node): void
->end()
->children()
->scalarNode('default_entity_manager')->end()
- ->scalarNode('auto_generate_proxy_classes')->defaultValue(false)
- ->info('Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true')
- ->validate()
- ->ifTrue(function ($v) {
- $generationModes = $this->getAutoGenerateModes();
-
- if (is_int($v) && in_array($v, $generationModes['values']/*array(0, 1, 2, 3)*/)) {
- return false;
- }
-
- if (is_bool($v)) {
- return false;
- }
-
- if (is_string($v)) {
- if (in_array(strtoupper($v), $generationModes['names']/*array('NEVER', 'ALWAYS', 'FILE_NOT_EXISTS', 'EVAL', 'FILE_NOT_EXISTS_OR_CHANGED')*/)) {
- return false;
- }
- }
-
- return true;
- })
- ->thenInvalid('Invalid auto generate mode value %s')
- ->end()
- ->validate()
- ->ifString()
- ->then(static fn (string $v) => constant('Doctrine\ORM\Proxy\ProxyFactory::AUTOGENERATE_' . strtoupper($v)))
- ->end()
- ->end()
->booleanNode('enable_native_lazy_objects')
- ->defaultFalse()
- ->info('Enables the new native implementation of PHP lazy objects instead of generated proxies')
- ->end()
- ->scalarNode('proxy_dir')
- ->defaultValue('%kernel.build_dir%/doctrine/orm/Proxies')
- ->info('Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true')
- ->end()
- ->scalarNode('proxy_namespace')
- ->defaultValue('Proxies')
- ->info('Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true')
+ ->defaultTrue()
+ ->info('no-op, will be deprecated and removed in the future')
->end()
->arrayNode('controller_resolver')
->canBeDisabled()
@@ -833,33 +786,4 @@ private function getOrmCacheDriverNode(string $name): ArrayNodeDefinition
return $node;
}
-
- /**
- * Find proxy auto generate modes for their names and int values
- *
- * @return array{names: list, values: list}
- */
- private function getAutoGenerateModes(): array
- {
- $constPrefix = 'AUTOGENERATE_';
- $prefixLen = strlen($constPrefix);
- $refClass = new ReflectionClass(ProxyFactory::class);
- $constsArray = $refClass->getConstants();
- $namesArray = [];
- $valuesArray = [];
-
- foreach ($constsArray as $key => $value) {
- if (strpos($key, $constPrefix) !== 0) {
- continue;
- }
-
- $namesArray[] = substr($key, $prefixLen);
- $valuesArray[] = (int) $value;
- }
-
- return [
- 'names' => $namesArray,
- 'values' => $valuesArray,
- ];
- }
}
diff --git a/src/DependencyInjection/DoctrineExtension.php b/src/DependencyInjection/DoctrineExtension.php
index 6c40a039c..0917c1582 100644
--- a/src/DependencyInjection/DoctrineExtension.php
+++ b/src/DependencyInjection/DoctrineExtension.php
@@ -16,7 +16,6 @@
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Connections\PrimaryReadReplicaConnection;
use Doctrine\DBAL\Driver\Middleware as MiddlewareInterface;
-use Doctrine\ORM\Configuration as ORMConfiguration;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Events;
use Doctrine\ORM\Id\AbstractIdGenerator;
@@ -26,9 +25,7 @@
use Doctrine\ORM\Mapping\Driver\StaticPHPDriver as LegacyStaticPHPDriver;
use Doctrine\ORM\Mapping\Embeddable;
use Doctrine\ORM\Mapping\Entity;
-use Doctrine\ORM\Mapping\LegacyReflectionFields;
use Doctrine\ORM\Mapping\MappedSuperclass;
-use Doctrine\ORM\ORMSetup;
use Doctrine\ORM\Proxy\Autoloader;
use Doctrine\ORM\UnitOfWork;
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
@@ -59,21 +56,16 @@
use Symfony\Component\Messenger\MessageBusInterface;
use Symfony\Component\PropertyInfo\PropertyInfoExtractorInterface;
use Symfony\Component\Validator\Mapping\Loader\LoaderInterface;
-use Symfony\Component\VarExporter\ProxyHelper;
use function array_intersect_key;
use function array_keys;
use function array_merge;
-use function assert;
use function class_exists;
use function interface_exists;
-use function is_bool;
use function is_dir;
-use function method_exists;
use function reset;
use function sprintf;
use function str_replace;
-use function trigger_deprecation;
/**
* DoctrineExtension is an extension for the Doctrine DBAL and ORM library.
@@ -514,32 +506,6 @@ protected function ormLoad(array $config, ContainerBuilder $container): void
$container->setParameter('doctrine.default_entity_manager', $config['default_entity_manager']);
- if (! class_exists(ProxyHelper::class)) {
- throw new LogicException(
- 'Lazy ghost objects cannot be enabled because the "symfony/var-exporter" library'
- . ' is not installed. Please run "composer require symfony/var-exporter".',
- );
- }
-
- if ($config['enable_native_lazy_objects'] ?? false) {
- /** @phpstan-ignore function.alreadyNarrowedType */
- if (! method_exists(ORMConfiguration::class, 'enableNativeLazyObjects')) {
- throw new LogicException(
- 'Native lazy objects are not supported with your installed version of the ORM. Please upgrade to "doctrine/orm >= 3.4".',
- );
- }
-
- $container->removeDefinition('doctrine.orm.proxy_cache_warmer');
- } else {
- // Only emit the deprecation notice for ORM 3 users
- trigger_deprecation('doctrine/doctrine-bundle', '2.16', 'Not setting "doctrine.orm.enable_native_lazy_objects" to true is deprecated.');
- }
-
- $options = ['auto_generate_proxy_classes', 'enable_native_lazy_objects', 'proxy_dir', 'proxy_namespace'];
- foreach ($options as $key) {
- $container->setParameter('doctrine.orm.' . $key, $config[$key]);
- }
-
$container->setAlias('doctrine.orm.entity_manager', $defaultEntityManagerDefinitionId = sprintf('doctrine.orm.%s_entity_manager', $config['default_entity_manager']));
$container->getAlias('doctrine.orm.entity_manager')->setPublic(true);
@@ -642,13 +608,11 @@ protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $
}
$methods = [
+ 'enableNativeLazyObjects' => true,
'setMetadataCache' => new Reference(sprintf('doctrine.orm.%s_metadata_cache', $entityManager['name'])),
'setQueryCache' => new Reference(sprintf('doctrine.orm.%s_query_cache', $entityManager['name'])),
'setResultCache' => new Reference(sprintf('doctrine.orm.%s_result_cache', $entityManager['name'])),
'setMetadataDriverImpl' => new Reference('doctrine.orm.' . $entityManager['name'] . '_metadata_driver'),
- 'setProxyDir' => '%doctrine.orm.proxy_dir%',
- 'setProxyNamespace' => '%doctrine.orm.proxy_namespace%',
- 'setAutoGenerateProxyClasses' => '%doctrine.orm.auto_generate_proxy_classes%',
'setSchemaIgnoreClasses' => $entityManager['schema_ignore_classes'],
'setClassMetadataFactoryName' => $entityManager['class_metadata_factory_name'],
'setDefaultRepositoryClassName' => $entityManager['default_repository_class'],
@@ -659,24 +623,6 @@ protected function loadOrmEntityManager(array $entityManager, ContainerBuilder $
'setIdentityGenerationPreferences' => $entityManager['identity_generation_preferences'],
];
- if (class_exists(LegacyReflectionFields::class)) {
- $enableNativeLazyObjects = $container->getParameter('doctrine.orm.enable_native_lazy_objects');
-
- assert(is_bool($enableNativeLazyObjects));
-
- $methods['enableNativeLazyObjects'] = $enableNativeLazyObjects;
-
- // Do not set deprecated proxy configurations when native lazy objects are enabled with `doctrine/orm:^3.5`
- /** @phpstan-ignore function.alreadyNarrowedType */
- if ($enableNativeLazyObjects && method_exists(ORMSetup::class, 'createAttributeMetadataConfig')) {
- unset(
- $methods['setProxyDir'],
- $methods['setProxyNamespace'],
- $methods['setAutoGenerateProxyClasses'],
- );
- }
- }
-
if (isset($entityManager['fetch_mode_subselect_batch_size'])) {
$methods['setEagerFetchBatchSize'] = $entityManager['fetch_mode_subselect_batch_size'];
}
@@ -1058,7 +1004,7 @@ private function createMetadataCache(string $objectManagerName, ContainerBuilder
$container->register($cacheWarmerServiceId, DoctrineMetadataCacheWarmer::class)
->setArguments([new Reference(sprintf('doctrine.orm.%s_entity_manager', $objectManagerName)), $phpArrayFile])
- ->addTag('kernel.cache_warmer', ['priority' => 1000]); // priority should be higher than ProxyCacheWarmer
+ ->addTag('kernel.cache_warmer', ['priority' => 1000]);
$cache = new Definition(PhpArrayAdapter::class, [$phpArrayFile, $cache]);
}
diff --git a/src/DoctrineBundle.php b/src/DoctrineBundle.php
index b7e3d1d6c..fe771a51d 100644
--- a/src/DoctrineBundle.php
+++ b/src/DoctrineBundle.php
@@ -2,7 +2,6 @@
namespace Doctrine\Bundle\DoctrineBundle;
-use Closure;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\CacheSchemaSubscriberPass;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\DbalSchemaFilterPass;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\EntityListenerPass;
@@ -11,9 +10,6 @@
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\RemoveLoggingMiddlewarePass;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\RemoveProfilerControllerPass;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\ServiceRepositoryCompilerPass;
-use Doctrine\ORM\EntityManagerInterface;
-use Doctrine\ORM\Proxy\Autoloader;
-use Doctrine\ORM\Proxy\DefaultProxyClassNameResolver;
use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\DoctrineValidationPass;
use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\RegisterDatePointTypePass;
use Symfony\Bridge\Doctrine\DependencyInjection\CompilerPass\RegisterEventListenersAndSubscribersPass;
@@ -26,17 +22,12 @@
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;
-use function assert;
use function class_exists;
-use function clearstatcache;
use function dirname;
-use function spl_autoload_unregister;
/** @final since 2.9 */
class DoctrineBundle extends Bundle
{
- private Closure|null $autoloader = null;
-
public function build(ContainerBuilder $container): void
{
parent::build($container);
@@ -80,65 +71,8 @@ public function process(ContainerBuilder $container): void
$container->addCompilerPass(new RegisterDatePointTypePass());
}
- public function boot(): void
- {
- // Register an autoloader for proxies when native lazy objects are not in use
- // to avoid issues when unserializing them when the ORM is used.
- if ($this->container->hasParameter('doctrine.orm.enable_native_lazy_objects') && $this->container->getParameter('doctrine.orm.enable_native_lazy_objects')) {
- return;
- }
-
- if (! $this->container->hasParameter('doctrine.orm.proxy_namespace')) {
- return;
- }
-
- $namespace = (string) $this->container->getParameter('doctrine.orm.proxy_namespace');
- $dir = (string) $this->container->getParameter('doctrine.orm.proxy_dir');
- $proxyGenerator = null;
-
- if ($this->container->getParameter('doctrine.orm.auto_generate_proxy_classes')) {
- // See https://github.com/symfony/symfony/pull/3419 for usage of references
- /** @psalm-suppress UnsupportedPropertyReferenceUsage */
- $container = &$this->container;
-
- $proxyGenerator = static function ($proxyDir, $proxyNamespace, $class) use (&$container): void {
- $originalClassName = (new DefaultProxyClassNameResolver())->resolveClassName($class);
- $registry = $container->get('doctrine');
- assert($registry instanceof Registry);
-
- foreach ($registry->getManagers() as $em) {
- assert($em instanceof EntityManagerInterface);
- if (! $em->getConfiguration()->getAutoGenerateProxyClasses()) {
- continue;
- }
-
- $metadataFactory = $em->getMetadataFactory();
-
- if ($metadataFactory->isTransient($originalClassName)) {
- continue;
- }
-
- $classMetadata = $metadataFactory->getMetadataFor($originalClassName);
-
- $em->getProxyFactory()->generateProxyClasses([$classMetadata]);
-
- clearstatcache(true, Autoloader::resolveFile($proxyDir, $proxyNamespace, $class));
-
- break;
- }
- };
- }
-
- $this->autoloader = Autoloader::register($dir, $namespace, $proxyGenerator);
- }
-
public function shutdown(): void
{
- if ($this->autoloader !== null) {
- spl_autoload_unregister($this->autoloader);
- $this->autoloader = null;
- }
-
// Clear all entity managers to clear references to entities for GC
if ($this->container->hasParameter('doctrine.entity_managers')) {
foreach ($this->container->getParameter('doctrine.entity_managers') as $id) {
diff --git a/src/Registry.php b/src/Registry.php
index 241bf43fb..cab26aa12 100644
--- a/src/Registry.php
+++ b/src/Registry.php
@@ -5,16 +5,13 @@
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\ORMException;
use Doctrine\Persistence\Proxy;
-use ProxyManager\Proxy\LazyLoadingInterface;
use ReflectionClass;
use Symfony\Bridge\Doctrine\ManagerRegistry;
use Symfony\Component\DependencyInjection\Container;
-use Symfony\Component\VarExporter\LazyObjectInterface;
use Symfony\Contracts\Service\ResetInterface;
use function array_keys;
use function assert;
-use function method_exists;
/**
* References all Doctrine connections and entity managers in a given Container.
@@ -81,27 +78,15 @@ private function resetOrClearManager(string $managerName, string $serviceId): vo
assert($manager instanceof EntityManagerInterface);
- // Determine if the version of symfony/dependency-injection is >= 7.3
- /** @phpstan-ignore function.alreadyNarrowedType */
- $sfNativeLazyObjects = method_exists('Symfony\Component\DependencyInjection\ContainerBuilder', 'findTaggedResourceIds');
-
- if (! $sfNativeLazyObjects) {
- if ((! $manager instanceof LazyLoadingInterface && ! $manager instanceof LazyObjectInterface) || $manager->isOpen()) {
- $manager->clear();
-
- return;
- }
- } else {
- $r = new ReflectionClass($manager);
- if ($r->isUninitializedLazyObject($manager)) {
- return;
- }
+ $r = new ReflectionClass($manager);
+ if ($r->isUninitializedLazyObject($manager)) {
+ return;
+ }
- if ($manager->isOpen()) {
- $manager->clear();
+ if ($manager->isOpen()) {
+ $manager->clear();
- return;
- }
+ return;
}
$this->resetManager($managerName);
diff --git a/tests/ContainerTest.php b/tests/ContainerTest.php
index 579d536a5..b6698b884 100644
--- a/tests/ContainerTest.php
+++ b/tests/ContainerTest.php
@@ -16,7 +16,6 @@
use Doctrine\Persistence\ManagerRegistry;
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
use Symfony\Bridge\Doctrine\ArgumentResolver\EntityValueResolver;
-use Symfony\Bridge\Doctrine\CacheWarmer\ProxyCacheWarmer;
use Symfony\Bridge\Doctrine\DataCollector\DoctrineDataCollector;
use Symfony\Bridge\Doctrine\PropertyInfo\DoctrineExtractor;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntityValidator;
@@ -60,11 +59,6 @@ public function testContainer(): void
$this->assertInstanceOf(InfoCommand::class, $container->get('doctrine.mapping_info_command'));
$this->assertInstanceOf(MappingDescribeCommand::class, $container->get('doctrine.mapping_describe_command'));
$this->assertInstanceOf(UpdateCommand::class, $container->get('doctrine.schema_update_command'));
-
- if (! $container->getParameter('doctrine.orm.enable_native_lazy_objects')) {
- $this->assertInstanceOf(ProxyCacheWarmer::class, $container->get('doctrine.orm.proxy_cache_warmer'));
- }
-
$this->assertTrue(Type::hasType('test'));
$this->assertFalse($container->has('doctrine.dbal.default_connection.events.mysqlsessioninit'));
diff --git a/tests/DependencyInjection/AbstractDoctrineExtensionTestCase.php b/tests/DependencyInjection/AbstractDoctrineExtensionTestCase.php
index dc97795d9..9c149963b 100644
--- a/tests/DependencyInjection/AbstractDoctrineExtensionTestCase.php
+++ b/tests/DependencyInjection/AbstractDoctrineExtensionTestCase.php
@@ -14,7 +14,6 @@
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver;
-use Doctrine\ORM\Mapping\LegacyReflectionFields;
use Generator;
use InvalidArgumentException;
use PDO;
@@ -37,7 +36,6 @@
use function array_keys;
use function array_values;
use function assert;
-use function class_exists;
use function end;
use function interface_exists;
use function is_dir;
@@ -478,7 +476,6 @@ public function testDependencyInjectionImportsOverrideDefaults(): void
$container = $this->loadContainer('orm_imports');
$configDefinition = $container->getDefinition('doctrine.orm.default_configuration');
- $this->assertDICDefinitionMethodCallOnce($configDefinition, 'setAutoGenerateProxyClasses', ['%doctrine.orm.auto_generate_proxy_classes%']);
$cacheDefinition = $container->getDefinition((string) $container->getAlias('doctrine.orm.default_metadata_cache'));
$this->assertEquals(PhpArrayAdapter::class, $cacheDefinition->getClass());
@@ -1302,14 +1299,10 @@ public function testNativeLazyObjectsWithoutConfig(): void
self::markTestSkipped('This test requires ORM');
}
- if (! class_exists(LegacyReflectionFields::class)) {
- self::markTestSkipped('This test requires ORM 3.4+');
- }
-
$container = $this->loadContainer('orm_filters');
$entityManager = $container->get('doctrine.orm.entity_manager');
- $this->assertFalse($entityManager->getConfiguration()->isNativeLazyObjectsEnabled());
+ $this->assertTrue($entityManager->getConfiguration()->isNativeLazyObjectsEnabled());
}
public function testNativeLazyObjectsWithConfigTrue(): void
@@ -1318,10 +1311,6 @@ public function testNativeLazyObjectsWithConfigTrue(): void
self::markTestSkipped('This test requires ORM');
}
- if (! class_exists(LegacyReflectionFields::class)) {
- self::markTestSkipped('This test requires ORM 3.4+');
- }
-
$container = $this->loadContainer('orm_native_lazy_objects_enable');
$entityManager = $container->get('doctrine.orm.entity_manager');
@@ -1334,14 +1323,13 @@ public function testNativeLazyObjectsWithConfigFalse(): void
self::markTestSkipped('This test requires ORM');
}
- if (! class_exists(LegacyReflectionFields::class)) {
- self::markTestSkipped('This test requires ORM 3.4+');
- }
-
$container = $this->loadContainer('orm_native_lazy_objects_disable');
$entityManager = $container->get('doctrine.orm.entity_manager');
- $this->assertFalse($entityManager->getConfiguration()->isNativeLazyObjectsEnabled());
+ $this->assertTrue(
+ $entityManager->getConfiguration()->isNativeLazyObjectsEnabled(),
+ 'The configuration node should be silently ignored, and will be deprecated in the future.',
+ );
}
/** @param list $bundles */
diff --git a/tests/DependencyInjection/Compiler/IdGeneratorPassTest.php b/tests/DependencyInjection/Compiler/IdGeneratorPassTest.php
index aea52a258..9dc2e70dd 100644
--- a/tests/DependencyInjection/Compiler/IdGeneratorPassTest.php
+++ b/tests/DependencyInjection/Compiler/IdGeneratorPassTest.php
@@ -5,7 +5,6 @@
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\IdGeneratorPass;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension;
use Doctrine\Bundle\DoctrineBundle\Tests\DependencyInjection\Fixtures\CustomIdGenerator;
-use Doctrine\ORM\Configuration;
use Doctrine\ORM\EntityManagerInterface;
use Fixtures\Bundles\AttributesBundle\AttributesBundle;
use Fixtures\Bundles\AttributesBundle\Entity\TestCustomIdGeneratorEntity as AttributeCustomIdGeneratorEntity;
@@ -16,7 +15,6 @@
use function assert;
use function interface_exists;
-use function method_exists;
use function sys_get_temp_dir;
use function uniqid;
@@ -84,11 +82,7 @@ public function testRepositoryServiceWiring(): void
'charset' => 'UTF8',
'schema_manager_factory' => 'doctrine.dbal.default_schema_manager_factory',
],
- 'orm' => [
- 'mappings' => $mappings,
- /** @phpstan-ignore function.alreadyNarrowedType */
- 'enable_native_lazy_objects' => method_exists(Configuration::class, 'enableNativeLazyObjects'),
- ],
+ 'orm' => ['mappings' => $mappings],
],
], $container);
diff --git a/tests/DependencyInjection/DoctrineExtensionTest.php b/tests/DependencyInjection/DoctrineExtensionTest.php
index 01078c275..55364c6f3 100644
--- a/tests/DependencyInjection/DoctrineExtensionTest.php
+++ b/tests/DependencyInjection/DoctrineExtensionTest.php
@@ -400,10 +400,8 @@ public function testDependencyInjectionConfigurationDefaults(): void
$extension->load([$config], $container);
- $this->assertFalse($container->getParameter('doctrine.orm.auto_generate_proxy_classes'));
$this->assertEquals(Configuration::class, $container->getParameter('doctrine.orm.configuration.class'));
$this->assertEquals(EntityManager::class, $container->getParameter('doctrine.orm.entity_manager.class'));
- $this->assertEquals('Proxies', $container->getParameter('doctrine.orm.proxy_namespace'));
$this->assertEquals(MappingDriverChain::class, $container->getParameter('doctrine.orm.metadata.driver_chain.class'));
$this->assertEquals(SimplifiedXmlDriver::class, $container->getParameter('doctrine.orm.metadata.xml.class'));
@@ -419,8 +417,6 @@ public function testDependencyInjectionConfigurationDefaults(): void
$config = BundleConfigurationBuilder::createBuilder()
->addBaseConnection()
->addEntityManager([
- 'proxy_namespace' => 'MyProxies',
- 'auto_generate_proxy_classes' => true,
'default_entity_manager' => 'default',
'entity_managers' => [
'default' => [
@@ -460,14 +456,14 @@ public function testDependencyInjectionConfigurationDefaults(): void
$definition = $container->getDefinition('doctrine.orm.default_configuration');
$calls = array_values($definition->getMethodCalls());
$this->assertEquals(['XmlBundle' => 'Fixtures\Bundles\XmlBundle\Entity'], $calls[0][1][0]);
- $this->assertEquals('doctrine.orm.default_metadata_cache', (string) $calls[1][1][0]);
- $this->assertEquals('doctrine.orm.default_query_cache', (string) $calls[2][1][0]);
- $this->assertEquals('doctrine.orm.default_result_cache', (string) $calls[3][1][0]);
+ $this->assertEquals('doctrine.orm.default_metadata_cache', (string) $calls[2][1][0]);
+ $this->assertEquals('doctrine.orm.default_query_cache', (string) $calls[3][1][0]);
+ $this->assertEquals('doctrine.orm.default_result_cache', (string) $calls[4][1][0]);
- $this->assertEquals('doctrine.orm.naming_strategy.default', (string) $calls[11][1][0]);
- $this->assertEquals('doctrine.orm.quote_strategy.default', (string) $calls[12][1][0]);
- $this->assertEquals('doctrine.orm.typed_field_mapper.default', (string) $calls[13][1][0]);
- $this->assertEquals('doctrine.orm.default_entity_listener_resolver', (string) $calls[14][1][0]);
+ $this->assertEquals('doctrine.orm.naming_strategy.default', (string) $calls[9][1][0]);
+ $this->assertEquals('doctrine.orm.quote_strategy.default', (string) $calls[10][1][0]);
+ $this->assertEquals('doctrine.orm.typed_field_mapper.default', (string) $calls[11][1][0]);
+ $this->assertEquals('doctrine.orm.default_entity_listener_resolver', (string) $calls[12][1][0]);
$definition = $container->getDefinition('doctrine.orm.default_metadata_cache_warmer');
$this->assertSame(DoctrineMetadataCacheWarmer::class, $definition->getClass());
@@ -513,34 +509,6 @@ public function testUseSavePointsAddMethodCallToAddSavepointsToTheConnection():
$this->assertCount(0, $calls);
}
- public function testAutoGenerateProxyClasses(): void
- {
- if (! interface_exists(EntityManagerInterface::class)) {
- self::markTestSkipped('This test requires ORM');
- }
-
- $container = $this->getContainer();
- $extension = new DoctrineExtension();
-
- $config = BundleConfigurationBuilder::createBuilder()
- ->addBaseConnection()
- ->addEntityManager([
- 'proxy_namespace' => 'MyProxies',
- 'auto_generate_proxy_classes' => 'eval',
- 'default_entity_manager' => 'default',
- 'entity_managers' => [
- 'default' => [
- 'mappings' => ['XmlBundle' => []],
- ],
- ],
- ])
- ->build();
-
- $extension->load([$config], $container);
-
- $this->assertEquals(3 /* \Doctrine\Common\Proxy\AbstractProxyFactory::AUTOGENERATE_EVAL */, $container->getParameter('doctrine.orm.auto_generate_proxy_classes'));
- }
-
public function testSingleEntityManagerWithDefaultConfiguration(): void
{
if (! interface_exists(EntityManagerInterface::class)) {
@@ -793,7 +761,6 @@ public function testOrmMergeConfigs(): void
$config1 = BundleConfigurationBuilder::createBuilder()
->addBaseConnection()
->addEntityManager([
- 'auto_generate_proxy_classes' => true,
'default_entity_manager' => 'default',
'entity_managers' => [
'default' => [
@@ -805,7 +772,6 @@ public function testOrmMergeConfigs(): void
$config2 = BundleConfigurationBuilder::createBuilder()
->addBaseConnection()
->addEntityManager([
- 'auto_generate_proxy_classes' => false,
'default_entity_manager' => 'default',
'entity_managers' => [
'default' => [
@@ -827,18 +793,6 @@ public function testOrmMergeConfigs(): void
new Reference('doctrine.orm.default_xml_metadata_driver'),
'Fixtures\Bundles\XmlBundle\Entity',
]);
-
- $configDef = $container->getDefinition('doctrine.orm.default_configuration');
- $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 testMessengerIntegration(): void
diff --git a/tests/DependencyInjection/Fixtures/TestKernel.php b/tests/DependencyInjection/Fixtures/TestKernel.php
index a2c4b710d..981283d22 100644
--- a/tests/DependencyInjection/Fixtures/TestKernel.php
+++ b/tests/DependencyInjection/Fixtures/TestKernel.php
@@ -3,7 +3,6 @@
namespace Doctrine\Bundle\DoctrineBundle\Tests\DependencyInjection\Fixtures;
use Doctrine\Bundle\DoctrineBundle\DoctrineBundle;
-use Doctrine\ORM\Configuration;
use Psr\Log\NullLogger;
use Symfony\Bundle\FrameworkBundle\FrameworkBundle;
use Symfony\Component\Config\Loader\LoaderInterface;
@@ -12,7 +11,6 @@
use Symfony\Component\HttpKernel\Kernel;
use function md5;
-use function method_exists;
use function mt_rand;
use function sys_get_temp_dir;
@@ -49,9 +47,6 @@ public function registerContainerConfiguration(LoaderInterface $loader): void
'schema_manager_factory' => 'doctrine.dbal.default_schema_manager_factory',
],
'orm' => [
- 'auto_generate_proxy_classes' => true,
- /** @phpstan-ignore function.alreadyNarrowedType */
- 'enable_native_lazy_objects' => method_exists(Configuration::class, 'enableNativeLazyObjects'),
'mappings' => [
'RepositoryServiceBundle' => [
'type' => 'attribute',
diff --git a/tests/DependencyInjection/Fixtures/config/xml/orm_imports.xml b/tests/DependencyInjection/Fixtures/config/xml/orm_imports.xml
index 20e9b25a2..87cf395f4 100644
--- a/tests/DependencyInjection/Fixtures/config/xml/orm_imports.xml
+++ b/tests/DependencyInjection/Fixtures/config/xml/orm_imports.xml
@@ -11,6 +11,6 @@
-
+
diff --git a/tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml b/tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml
index d3c0e30ab..eda2e9819 100644
--- a/tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml
+++ b/tests/DependencyInjection/Fixtures/config/xml/orm_imports_import.xml
@@ -11,10 +11,7 @@
-
+
diff --git a/tests/DependencyInjection/Fixtures/config/xml/orm_proxy.xml b/tests/DependencyInjection/Fixtures/config/xml/orm_proxy.xml
deleted file mode 100644
index a4410da97..000000000
--- a/tests/DependencyInjection/Fixtures/config/xml/orm_proxy.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml b/tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml
index 7f1c04034..4d7e0e33d 100644
--- a/tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml
+++ b/tests/DependencyInjection/Fixtures/config/xml/orm_service_multiple_entity_managers.xml
@@ -5,11 +5,6 @@
xmlns:srv="http://symfony.com/schema/dic/services"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
-
-
- Proxies
-
-
-
+
diff --git a/tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml b/tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml
index c4307843c..2a0f0e39d 100644
--- a/tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml
+++ b/tests/DependencyInjection/Fixtures/config/xml/orm_service_single_entity_manager.xml
@@ -5,11 +5,6 @@
xmlns:srv="http://symfony.com/schema/dic/services"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
http://symfony.com/schema/dic/doctrine http://symfony.com/schema/dic/doctrine/doctrine-1.0.xsd">
-
-
- Proxies
-
-
-
+
diff --git a/tests/DependencyInjection/Fixtures/config/yml/orm_imports.yml b/tests/DependencyInjection/Fixtures/config/yml/orm_imports.yml
index df8794588..20919f2da 100644
--- a/tests/DependencyInjection/Fixtures/config/yml/orm_imports.yml
+++ b/tests/DependencyInjection/Fixtures/config/yml/orm_imports.yml
@@ -2,5 +2,4 @@ imports:
- { resource: orm_imports_import.yml }
doctrine:
- orm:
- auto_generate_proxy_classes: true
+ orm: ~
diff --git a/tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml b/tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml
index a5b65bcc2..c18f1ad28 100644
--- a/tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml
+++ b/tests/DependencyInjection/Fixtures/config/yml/orm_imports_import.yml
@@ -6,7 +6,6 @@ doctrine:
dbname: db
orm:
- auto_generate_proxy_classes: false
default_entity_manager: default
entity_managers:
default:
diff --git a/tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml b/tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml
index 0c28ea210..6e5e2d781 100644
--- a/tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml
+++ b/tests/DependencyInjection/Fixtures/config/yml/orm_service_multiple_entity_managers.yml
@@ -1,6 +1,3 @@
-parameters:
- doctrine.orm.proxy_namespace: Proxies
-
doctrine:
dbal:
default_connection: conn1
@@ -20,7 +17,6 @@ doctrine:
orm:
default_entity_manager: em2
- auto_generate_proxy_classes: true
entity_managers:
em1:
connection: conn1
diff --git a/tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml b/tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml
index da64c9750..42e81c924 100644
--- a/tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml
+++ b/tests/DependencyInjection/Fixtures/config/yml/orm_service_single_entity_manager.yml
@@ -11,8 +11,6 @@ doctrine:
orm:
default_entity_manager: default
- proxy_namespace: Proxies
- auto_generate_proxy_classes: true
entity_managers:
default:
connection: default
diff --git a/tests/ServiceRepositoryTest.php b/tests/ServiceRepositoryTest.php
index 47a43ab26..46938fa21 100644
--- a/tests/ServiceRepositoryTest.php
+++ b/tests/ServiceRepositoryTest.php
@@ -4,7 +4,6 @@
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\Compiler\ServiceRepositoryCompilerPass;
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension;
-use Doctrine\ORM\Configuration;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\EntityRepository;
use Doctrine\ORM\QueryBuilder;
@@ -20,7 +19,6 @@
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
use function interface_exists;
-use function method_exists;
use function sys_get_temp_dir;
use function uniqid;
@@ -79,8 +77,6 @@ public function testRepositoryServiceWiring(): void
'schema_manager_factory' => 'doctrine.dbal.default_schema_manager_factory',
],
'orm' => [
- /** @phpstan-ignore function.alreadyNarrowedType */
- 'enable_native_lazy_objects' => method_exists(Configuration::class, 'enableNativeLazyObjects'),
'mappings' => [
'RepositoryServiceBundle' => [
'type' => 'attribute',
diff --git a/tests/TestCase.php b/tests/TestCase.php
index a50c858a3..4b09ca073 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -4,7 +4,6 @@
use Doctrine\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension;
use Doctrine\Bundle\DoctrineBundle\Tests\DependencyInjection\TestType;
-use Doctrine\ORM\Configuration;
use PHPUnit\Framework\TestCase as BaseTestCase;
use Symfony\Component\Cache\Adapter\ArrayAdapter;
use Symfony\Component\DependencyInjection\Compiler\ResolveChildDefinitionsPass;
@@ -13,7 +12,6 @@
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
use Symfony\Component\Security\Core\User\UserInterface;
-use function method_exists;
use function sys_get_temp_dir;
use function uniqid;
@@ -67,8 +65,6 @@ public function createXmlBundleTestContainer(): ContainerBuilder
],
],
'resolve_target_entities' => [UserInterface::class => 'stdClass'],
- /** @phpstan-ignore function.alreadyNarrowedType */
- 'enable_native_lazy_objects' => method_exists(Configuration::class, 'enableNativeLazyObjects'),
],
],
], $container);
diff --git a/tests/baseline-ignore b/tests/baseline-ignore
deleted file mode 100644
index edc13cd28..000000000
--- a/tests/baseline-ignore
+++ /dev/null
@@ -1 +0,0 @@
-%Not setting "doctrine.orm.enable_native_lazy_objects" to true is deprecated.%