Skip to content

Commit

Permalink
Migrate to embedded class mapping object API
Browse files Browse the repository at this point in the history
  • Loading branch information
greg0ire committed Apr 14, 2023
1 parent c49bba7 commit 118eb87
Show file tree
Hide file tree
Showing 6 changed files with 20 additions and 20 deletions.
22 changes: 11 additions & 11 deletions lib/Doctrine/ORM/Mapping/ClassMetadata.php
Original file line number Diff line number Diff line change
Expand Up @@ -794,26 +794,26 @@ public function wakeupReflection(ReflectionService $reflService): void
$parentReflFields = [];

foreach ($this->embeddedClasses as $property => $embeddedClass) {
if (isset($embeddedClass['declaredField'])) {
assert($embeddedClass['originalField'] !== null);
if (isset($embeddedClass->declaredField)) {
assert($embeddedClass->originalField !== null);
$childProperty = $this->getAccessibleProperty(
$reflService,
$this->embeddedClasses[$embeddedClass['declaredField']]['class'],
$embeddedClass['originalField'],
$this->embeddedClasses[$embeddedClass->declaredField]->class,
$embeddedClass->originalField,
);
assert($childProperty !== null);
$parentReflFields[$property] = new ReflectionEmbeddedProperty(
$parentReflFields[$embeddedClass['declaredField']],
$parentReflFields[$embeddedClass->declaredField],
$childProperty,
$this->embeddedClasses[$embeddedClass['declaredField']]['class'],
$this->embeddedClasses[$embeddedClass->declaredField]->class,
);

continue;
}

$fieldRefl = $this->getAccessibleProperty(
$reflService,
$embeddedClass['declared'] ?? $this->name,
$embeddedClass->declared ?? $this->name,
$property,
);

Expand Down Expand Up @@ -1808,7 +1808,7 @@ public function isInheritedAssociation(string $fieldName): bool

public function isInheritedEmbeddedClass(string $fieldName): bool
{
return isset($this->embeddedClasses[$fieldName]['inherited']);
return isset($this->embeddedClasses[$fieldName]->inherited);
}

/**
Expand Down Expand Up @@ -2544,9 +2544,9 @@ public function inlineEmbeddable(string $property, ClassMetadata $embeddable): v
$fieldMapping['originalField'] ??= $fieldMapping['fieldName'];
$fieldMapping['fieldName'] = $property . '.' . $fieldMapping['fieldName'];

if (! empty($this->embeddedClasses[$property]['columnPrefix'])) {
$fieldMapping['columnName'] = $this->embeddedClasses[$property]['columnPrefix'] . $fieldMapping['columnName'];
} elseif ($this->embeddedClasses[$property]['columnPrefix'] !== false) {
if (! empty($this->embeddedClasses[$property]->columnPrefix)) {
$fieldMapping['columnName'] = $this->embeddedClasses[$property]->columnPrefix . $fieldMapping['columnName'];
} elseif ($this->embeddedClasses[$property]->columnPrefix !== false) {
assert($this->reflClass !== null);
assert($embeddable->reflClass !== null);
$fieldMapping['columnName'] = $this->namingStrategy
Expand Down
8 changes: 4 additions & 4 deletions lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php
Original file line number Diff line number Diff line change
Expand Up @@ -138,17 +138,17 @@ protected function doLoadMetadata(
}

foreach ($class->embeddedClasses as $property => $embeddableClass) {
if (isset($embeddableClass['inherited'])) {
if (isset($embeddableClass->inherited)) {
continue;
}

if (isset($this->embeddablesActiveNesting[$embeddableClass['class']])) {
if (isset($this->embeddablesActiveNesting[$embeddableClass->class])) {
throw MappingException::infiniteEmbeddableNesting($class->name, $property);
}

$this->embeddablesActiveNesting[$class->name] = true;

$embeddableMetadata = $this->getMetadataFor($embeddableClass['class']);
$embeddableMetadata = $this->getMetadataFor($embeddableClass->class);

if ($embeddableMetadata->isEmbeddedClass) {
$this->addNestedEmbeddedClasses($embeddableMetadata, $class, $property);
Expand Down Expand Up @@ -458,7 +458,7 @@ private function addNestedEmbeddedClasses(
string $prefix,
): void {
foreach ($subClass->embeddedClasses as $property => $embeddableClass) {
if (isset($embeddableClass['inherited'])) {
if (isset($embeddableClass->inherited)) {
continue;
}

Expand Down
2 changes: 1 addition & 1 deletion psalm-baseline.xml
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@
<code>$className</code>
<code><![CDATA[$mapping['targetEntity']]]></code>
<code><![CDATA[$mapping['targetEntity']]]></code>
<code><![CDATA[$parentReflFields[$embeddedClass['declaredField']]]]></code>
<code><![CDATA[$parentReflFields[$embeddedClass->declaredField]]]></code>
</PossiblyNullArgument>
<PossiblyNullReference>
<code>getProperty</code>
Expand Down
2 changes: 1 addition & 1 deletion tests/Doctrine/Tests/ORM/Mapping/ClassMetadataTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ public function testFieldIsNullableByType(): void
self::assertEquals(CmsEmail::class, $cm->getAssociationMapping('mainEmail')['targetEntity']);

$cm->mapEmbedded(['fieldName' => 'contact']);
self::assertEquals(Contact::class, $cm->embeddedClasses['contact']['class']);
self::assertEquals(Contact::class, $cm->embeddedClasses['contact']->class);
}

public function testFieldTypeFromReflection(): void
Expand Down
2 changes: 1 addition & 1 deletion tests/Doctrine/Tests/ORM/Mapping/MappingDriverTestCase.php
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ public function testFieldTypeFromReflection(): void

self::assertEquals(CmsEmail::class, $class->getAssociationMapping('email')['targetEntity']);
self::assertEquals(CmsEmail::class, $class->getAssociationMapping('mainEmail')['targetEntity']);
self::assertEquals(Contact::class, $class->embeddedClasses['contact']['class']);
self::assertEquals(Contact::class, $class->embeddedClasses['contact']->class);
}

#[\PHPUnit\Framework\Attributes\Group('GH10313')]
Expand Down
4 changes: 2 additions & 2 deletions tests/Doctrine/Tests/ORM/Mapping/XmlMappingDriverTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ public function testEmbeddedMappingsWithUseColumnPrefix(): void
self::assertEquals(
'__prefix__',
$factory->getMetadataFor(DDC3293UserPrefixed::class)
->embeddedClasses['address']['columnPrefix'],
->embeddedClasses['address']->columnPrefix,
);
}

Expand All @@ -127,7 +127,7 @@ public function testEmbeddedMappingsWithFalseUseColumnPrefix(): void

self::assertFalse(
$factory->getMetadataFor(DDC3293User::class)
->embeddedClasses['address']['columnPrefix'],
->embeddedClasses['address']->columnPrefix,
);
}

Expand Down

0 comments on commit 118eb87

Please sign in to comment.