summaryrefslogtreecommitdiff
path: root/vendor/doctrine/orm/src/Mapping/Driver/ReflectionBasedDriver.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/Mapping/Driver/ReflectionBasedDriver.php
parent94d67a4b51f8e62e7d518cce26a526ae1ec48278 (diff)
downloadAppliGestionPHP-bf6655a534a6775d30cafa67bd801276bda1d98d.zip
VERSION 0.2 doctrine ORM et entités
Diffstat (limited to 'vendor/doctrine/orm/src/Mapping/Driver/ReflectionBasedDriver.php')
-rw-r--r--vendor/doctrine/orm/src/Mapping/Driver/ReflectionBasedDriver.php44
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/doctrine/orm/src/Mapping/Driver/ReflectionBasedDriver.php b/vendor/doctrine/orm/src/Mapping/Driver/ReflectionBasedDriver.php
new file mode 100644
index 0000000..7d85471
--- /dev/null
+++ b/vendor/doctrine/orm/src/Mapping/Driver/ReflectionBasedDriver.php
@@ -0,0 +1,44 @@
1<?php
2
3declare(strict_types=1);
4
5namespace Doctrine\ORM\Mapping\Driver;
6
7use Doctrine\ORM\Mapping\ClassMetadata;
8use ReflectionProperty;
9
10/** @internal */
11trait ReflectionBasedDriver
12{
13 /**
14 * Helps to deal with the case that reflection may report properties inherited from parent classes.
15 * When we know about the fields already (inheritance has been anticipated in ClassMetadataFactory),
16 * the driver must skip them.
17 *
18 * The declaring classes may mismatch when there are private properties: The same property name may be
19 * reported multiple times, but since it is private, it is in fact multiple (different) properties in
20 * different classes. In that case, report the property as an individual field. (ClassMetadataFactory will
21 * probably fail in that case, though.)
22 */
23 private function isRepeatedPropertyDeclaration(ReflectionProperty $property, ClassMetadata $metadata): bool
24 {
25 $declaringClass = $property->class;
26
27 if (
28 isset($metadata->fieldMappings[$property->name]->declared)
29 && $metadata->fieldMappings[$property->name]->declared === $declaringClass
30 ) {
31 return true;
32 }
33
34 if (
35 isset($metadata->associationMappings[$property->name]->declared)
36 && $metadata->associationMappings[$property->name]->declared === $declaringClass
37 ) {
38 return true;
39 }
40
41 return isset($metadata->embeddedClasses[$property->name]->declared)
42 && $metadata->embeddedClasses[$property->name]->declared === $declaringClass;
43 }
44}