Skip to content

Commit 238ee4c

Browse files
committed
Remove deprecations
1 parent 09fc38c commit 238ee4c

File tree

2 files changed

+44
-20
lines changed

2 files changed

+44
-20
lines changed

src/Doctrine/DoctrineHelper.php

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,20 @@
1111

1212
namespace Symfony\Bundle\MakerBundle\Doctrine;
1313

14-
use Doctrine\Common\Persistence\ManagerRegistry;
15-
use Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory;
16-
use Doctrine\Common\Persistence\Mapping\ClassMetadata;
17-
use Doctrine\Common\Persistence\Mapping\Driver\AnnotationDriver;
18-
use Doctrine\Common\Persistence\Mapping\Driver\MappingDriver;
19-
use Doctrine\Common\Persistence\Mapping\Driver\MappingDriverChain;
20-
use Doctrine\Common\Persistence\Mapping\MappingException as PersistenceMappingException;
14+
use Doctrine\Common\Persistence\ManagerRegistry as LegacyManagerRegistry;
15+
use Doctrine\Common\Persistence\Mapping\ClassMetadata as LegacyClassMetadata;
16+
use Doctrine\Common\Persistence\Mapping\Driver\MappingDriver as LegacyMappingDriver;
17+
use Doctrine\Common\Persistence\Mapping\MappingException as LegacyPersistenceMappingException;
2118
use Doctrine\ORM\EntityManagerInterface;
2219
use Doctrine\ORM\Mapping\MappingException as ORMMappingException;
2320
use Doctrine\ORM\Tools\DisconnectedClassMetadataFactory;
21+
use Doctrine\Persistence\ManagerRegistry;
22+
use Doctrine\Persistence\Mapping\AbstractClassMetadataFactory;
23+
use Doctrine\Persistence\Mapping\ClassMetadata;
24+
use Doctrine\Persistence\Mapping\Driver\AnnotationDriver;
25+
use Doctrine\Persistence\Mapping\Driver\MappingDriver;
26+
use Doctrine\Persistence\Mapping\Driver\MappingDriverChain;
27+
use Doctrine\Persistence\Mapping\MappingException as PersistenceMappingException;
2428
use Symfony\Bundle\MakerBundle\Util\ClassNameDetails;
2529

2630
/**
@@ -42,13 +46,19 @@ final class DoctrineHelper
4246
*/
4347
private $registry;
4448

45-
public function __construct(string $entityNamespace, ManagerRegistry $registry = null)
49+
/**
50+
* @var ManagerRegistry|LegacyManagerRegistry
51+
*/
52+
public function __construct(string $entityNamespace, $registry = null)
4653
{
4754
$this->entityNamespace = trim($entityNamespace, '\\');
4855
$this->registry = $registry;
4956
}
5057

51-
public function getRegistry(): ManagerRegistry
58+
/**
59+
* @return LegacyManagerRegistry|ManagerRegistry
60+
*/
61+
public function getRegistry()
5262
{
5363
// this should never happen: we will have checked for the
5464
// DoctrineBundle dependency before calling this
@@ -70,7 +80,7 @@ public function getEntityNamespace(): string
7080
}
7181

7282
/**
73-
* @return MappingDriver|null
83+
* @return MappingDriver|LegacyMappingDriver|null
7484
*
7585
* @throws \Exception
7686
*/
@@ -85,7 +95,7 @@ public function getMappingDriverForClass(string $className)
8595

8696
$metadataDriver = $em->getConfiguration()->getMetadataDriverImpl();
8797

88-
if (!$metadataDriver instanceof MappingDriverChain) {
98+
if (!$this->isInstanceOf($metadataDriver, MappingDriverChain::class)) {
8999
return $metadataDriver;
90100
}
91101

@@ -116,7 +126,7 @@ public function getEntitiesForAutocomplete(): array
116126
}
117127

118128
/**
119-
* @return array|ClassMetadata
129+
* @return array|ClassMetadata|LegacyClassMetadata
120130
*/
121131
public function getMetadata(string $classOrNamespace = null, bool $disconnected = false)
122132
{
@@ -130,9 +140,11 @@ public function getMetadata(string $classOrNamespace = null, bool $disconnected
130140
try {
131141
$loaded = $cmf->getAllMetadata();
132142
} catch (ORMMappingException $e) {
133-
$loaded = $cmf instanceof AbstractClassMetadataFactory ? $cmf->getLoadedMetadata() : [];
143+
$loaded = $this->isInstanceOf($cmf, AbstractClassMetadataFactory::class) ? $cmf->getLoadedMetadata() : [];
144+
} catch (LegacyPersistenceMappingException $e) {
145+
$loaded = $this->isInstanceOf($cmf, AbstractClassMetadataFactory::class) ? $cmf->getLoadedMetadata() : [];
134146
} catch (PersistenceMappingException $e) {
135-
$loaded = $cmf instanceof AbstractClassMetadataFactory ? $cmf->getLoadedMetadata() : [];
147+
$loaded = $this->isInstanceOf($cmf, AbstractClassMetadataFactory::class) ? $cmf->getLoadedMetadata() : [];
136148
}
137149

138150
$cmf = new DisconnectedClassMetadataFactory();
@@ -144,9 +156,9 @@ public function getMetadata(string $classOrNamespace = null, bool $disconnected
144156

145157
// Invalidating the cached AnnotationDriver::$classNames to find new Entity classes
146158
$metadataDriver = $em->getConfiguration()->getMetadataDriverImpl();
147-
if ($metadataDriver instanceof MappingDriverChain) {
159+
if ($this->isInstanceOf($metadataDriver, MappingDriverChain::class)) {
148160
foreach ($metadataDriver->getDrivers() as $driver) {
149-
if ($driver instanceof AnnotationDriver) {
161+
if ($this->isInstanceOf($driver, AnnotationDriver::class)) {
150162
$classNames = (new \ReflectionObject($driver))->getProperty('classNames');
151163
$classNames->setAccessible(true);
152164
$classNames->setValue($driver, null);
@@ -181,7 +193,7 @@ public function createDoctrineDetails(string $entityClassName)
181193
{
182194
$metadata = $this->getMetadata($entityClassName);
183195

184-
if ($metadata instanceof ClassMetadata) {
196+
if ($this->isInstanceOf($metadata, ClassMetadata::class)) {
185197
return new EntityDetails($metadata);
186198
}
187199

@@ -196,4 +208,15 @@ public function isClassAMappedEntity(string $className): bool
196208

197209
return (bool) $this->getMetadata($className);
198210
}
211+
212+
private function isInstanceOf($object, string $class): bool
213+
{
214+
if (!\is_object($object)) {
215+
return false;
216+
}
217+
218+
$legacyClass = str_replace('Doctrine\\Persistence\\', 'Doctrine\\Common\\Persistence\\', $class);
219+
220+
return $object instanceof $class || $object instanceof $legacyClass;
221+
}
199222
}

src/Doctrine/EntityDetails.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
namespace Symfony\Bundle\MakerBundle\Doctrine;
1313

14-
use Doctrine\Common\Persistence\Mapping\ClassMetadata;
14+
use Doctrine\Common\Persistence\Mapping\ClassMetadata as LegacyClassMetadata;
15+
use Doctrine\Persistence\Mapping\ClassMetadata;
1516

1617
/**
1718
* @author Sadicov Vladimir <[email protected]>
@@ -23,9 +24,9 @@ final class EntityDetails
2324
private $metadata;
2425

2526
/**
26-
* @param ClassMetadata|\Doctrine\ORM\Mapping\ClassMetadata $metadata
27+
* @param ClassMetadata|LegacyClassMetadata $metadata
2728
*/
28-
public function __construct(ClassMetadata $metadata)
29+
public function __construct($metadata)
2930
{
3031
$this->metadata = $metadata;
3132
}

0 commit comments

Comments
 (0)