*/ final class EmbeddedClassMapping implements ArrayAccess { use ArrayAccessImplementation; public string|false|null $columnPrefix = null; public string|null $declaredField = null; public string|null $originalField = null; /** * This is set when this embedded-class field is inherited by this class * from another (inheritance) parent entity class. The value is * the FQCN of the topmost entity class that contains mapping information * for this field. (If there are transient classes in the class hierarchy, * these are ignored, so the class property may in fact come from a class * further up in the PHP class hierarchy.) Fields initially declared in * mapped superclasses are not considered 'inherited' in the * nearest entity subclasses. * * @var class-string|null */ public string|null $inherited = null; /** * This is set when the embedded-class field does not appear for the first * time in this class, but is originally declared in another parent * entity or mapped superclass. The value is the FQCN of the * topmost non-transient class that contains mapping information for this * field. * * @var class-string|null */ public string|null $declared = null; /** @param class-string $class */ public function __construct(public string $class) { } /** * @psalm-param array{ * class: class-string, * columnPrefix?: false|string|null, * declaredField?: string|null, * originalField?: string|null, * inherited?: class-string|null, * declared?: class-string|null, * } $mappingArray */ public static function fromMappingArray(array $mappingArray): self { $mapping = new self($mappingArray['class']); foreach ($mappingArray as $key => $value) { if ($key === 'class') { continue; } if (property_exists($mapping, $key)) { $mapping->$key = $value; } } return $mapping; } /** @return list */ public function __sleep(): array { $serialized = ['class']; if ($this->columnPrefix) { $serialized[] = 'columnPrefix'; } foreach (['declaredField', 'originalField', 'inherited', 'declared'] as $property) { if ($this->$property !== null) { $serialized[] = $property; } } return $serialized; } }