![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/doctrine/orm/src/Mapping/ |
<?php declare(strict_types=1); namespace Doctrine\ORM\Mapping; use DateInterval; use DateTime; use DateTimeImmutable; use Doctrine\DBAL\Types\Type; use Doctrine\DBAL\Types\Types; use ReflectionEnum; use ReflectionNamedType; use ReflectionProperty; use function array_merge; use function assert; use function enum_exists; use const PHP_VERSION_ID; /** @psalm-type ScalarName = 'array'|'bool'|'float'|'int'|'string' */ final class DefaultTypedFieldMapper implements TypedFieldMapper { /** @var array<class-string|ScalarName, class-string<Type>|string> $typedFieldMappings */ private $typedFieldMappings; private const DEFAULT_TYPED_FIELD_MAPPINGS = [ DateInterval::class => Types::DATEINTERVAL, DateTime::class => Types::DATETIME_MUTABLE, DateTimeImmutable::class => Types::DATETIME_IMMUTABLE, 'array' => Types::JSON, 'bool' => Types::BOOLEAN, 'float' => Types::FLOAT, 'int' => Types::INTEGER, 'string' => Types::STRING, ]; /** @param array<class-string|ScalarName, class-string<Type>|string> $typedFieldMappings */ public function __construct(array $typedFieldMappings = []) { $this->typedFieldMappings = array_merge(self::DEFAULT_TYPED_FIELD_MAPPINGS, $typedFieldMappings); } /** * {@inheritDoc} */ public function validateAndComplete(array $mapping, ReflectionProperty $field): array { $type = $field->getType(); if ( ! isset($mapping['type']) && ($type instanceof ReflectionNamedType) ) { if (PHP_VERSION_ID >= 80100 && ! $type->isBuiltin() && enum_exists($type->getName())) { $mapping['enumType'] = $type->getName(); $reflection = new ReflectionEnum($type->getName()); if (! $reflection->isBacked()) { throw MappingException::backedEnumTypeRequired( $field->class, $mapping['fieldName'], $mapping['enumType'] ); } $type = $reflection->getBackingType(); assert($type instanceof ReflectionNamedType); } if (isset($this->typedFieldMappings[$type->getName()])) { $mapping['type'] = $this->typedFieldMappings[$type->getName()]; } } return $mapping; } }