1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <?php
- namespace Doctrine\Bundle\DoctrineBundle\Mapping;
- use Doctrine\ORM\Mapping\ClassMetadataInfo;
- use Doctrine\Persistence\Mapping\ClassMetadata;
- use Doctrine\Persistence\Mapping\Driver\MappingDriver as MappingDriverInterface;
- use Psr\Container\ContainerInterface;
- class MappingDriver implements MappingDriverInterface
- {
- /** @var MappingDriverInterface */
- private $driver;
- /** @var ContainerInterface */
- private $idGeneratorLocator;
- public function __construct(MappingDriverInterface $driver, ContainerInterface $idGeneratorLocator)
- {
- $this->driver = $driver;
- $this->idGeneratorLocator = $idGeneratorLocator;
- }
- /**
- * {@inheritDoc}
- */
- public function getAllClassNames()
- {
- return $this->driver->getAllClassNames();
- }
- /**
- * {@inheritDoc}
- */
- public function isTransient($className): bool
- {
- return $this->driver->isTransient($className);
- }
- /**
- * {@inheritDoc}
- */
- public function loadMetadataForClass($className, ClassMetadata $metadata): void
- {
- $this->driver->loadMetadataForClass($className, $metadata);
- if (
- ! $metadata instanceof ClassMetadataInfo
- || $metadata->generatorType !== ClassMetadataInfo::GENERATOR_TYPE_CUSTOM
- || ! isset($metadata->customGeneratorDefinition['class'])
- || ! $this->idGeneratorLocator->has($metadata->customGeneratorDefinition['class'])
- ) {
- return;
- }
- $idGenerator = $this->idGeneratorLocator->get($metadata->customGeneratorDefinition['class']);
- $metadata->setCustomGeneratorDefinition(['instance' => $idGenerator] + $metadata->customGeneratorDefinition);
- $metadata->setIdGeneratorType(ClassMetadataInfo::GENERATOR_TYPE_NONE);
- }
- /**
- * Returns the inner driver
- */
- public function getDriver(): MappingDriverInterface
- {
- return $this->driver;
- }
- }
|