/
DoctrineDtoBundle.php
48 lines (38 loc) · 1.61 KB
/
DoctrineDtoBundle.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
namespace KonstantinKuklin\DoctrineDtoBundle;
use KonstantinKuklin\DoctrineDto\Configuration\Map;
use KonstantinKuklin\DoctrineDto\Configuration\MapInterface;
use KonstantinKuklin\DoctrineDto\DtoClassMap;
use KonstantinKuklin\DoctrineDtoBundle\DependencyInjection\DtoHydratorExtension;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class DoctrineDtoBundle extends Bundle
{
public function boot()
{
$classMap = $this->container->getParameter('doctrine_dto.class_map');
$mapGeneratorDto = $this->container->getParameter('doctrine_dto.map_generator_dto');
$mapGeneratorEntity = $this->container->getParameter('doctrine_dto.map_generator_entity');
$entityDtoMap = new Map();
foreach ($classMap as $entityPath => $dtoPath) {
$entityDtoMap->addMapElement($entityPath, $dtoPath);
}
foreach ($mapGeneratorDto as $classPath) {
/** @var MapInterface $classPath */
$object = new $classPath();
$entityDtoMap->addMapGeneratorElement($object);
}
$dtoEntityMap = $entityDtoMap->getFlippedMap();
foreach ($mapGeneratorEntity as $classPath) {
/** @var MapInterface $classPath */
$object = new $classPath();
$dtoEntityMap->addMapGeneratorElement($object);
}
DtoClassMap::setMap($entityDtoMap, $dtoEntityMap);
}
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->registerExtension(new DtoHydratorExtension());
}
}