summaryrefslogtreecommitdiff
path: root/vendor/doctrine/orm/src/Utility/HierarchyDiscriminatorResolver.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2024-08-13 23:45:21 +0200
committerpolo <ordipolo@gmx.fr>2024-08-13 23:45:21 +0200
commitbf6655a534a6775d30cafa67bd801276bda1d98d (patch)
treec6381e3f6c81c33eab72508f410b165ba05f7e9c /vendor/doctrine/orm/src/Utility/HierarchyDiscriminatorResolver.php
parent94d67a4b51f8e62e7d518cce26a526ae1ec48278 (diff)
downloadAppliGestionPHP-bf6655a534a6775d30cafa67bd801276bda1d98d.zip
VERSION 0.2 doctrine ORM et entités
Diffstat (limited to 'vendor/doctrine/orm/src/Utility/HierarchyDiscriminatorResolver.php')
-rw-r--r--vendor/doctrine/orm/src/Utility/HierarchyDiscriminatorResolver.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/doctrine/orm/src/Utility/HierarchyDiscriminatorResolver.php b/vendor/doctrine/orm/src/Utility/HierarchyDiscriminatorResolver.php
new file mode 100644
index 0000000..b682125
--- /dev/null
+++ b/vendor/doctrine/orm/src/Utility/HierarchyDiscriminatorResolver.php
@@ -0,0 +1,44 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\ORM\Utility;
6
7use Doctrine\ORM\EntityManagerInterface;
8use Doctrine\Persistence\Mapping\ClassMetadata;
9
10/** @internal This class exists only to avoid code duplication, do not reuse it externally */
11final class HierarchyDiscriminatorResolver
12{
13 private function __construct()
14 {
15 }
16
17 /**
18 * This method is needed to make INSTANCEOF work correctly with inheritance: if the class at hand has inheritance,
19 * it extracts all the discriminators from the child classes and returns them
20 *
21 * @return null[]
22 * @psalm-return array<array-key, null>
23 */
24 public static function resolveDiscriminatorsForClass(
25 ClassMetadata $rootClassMetadata,
26 EntityManagerInterface $entityManager,
27 ): array {
28 $hierarchyClasses = $rootClassMetadata->subClasses;
29 $hierarchyClasses[] = $rootClassMetadata->name;
30
31 $discriminators = [];
32
33 foreach ($hierarchyClasses as $class) {
34 $currentMetadata = $entityManager->getClassMetadata($class);
35 $currentDiscriminator = $currentMetadata->discriminatorValue;
36
37 if ($currentDiscriminator !== null) {
38 $discriminators[$currentDiscriminator] = null;
39 }
40 }
41
42 return $discriminators;
43 }
44}