Skip to content

Commit 2b3afa7

Browse files
authored
fix(bundle): register provider automatically (#234)
Fix #209
2 parents f5259bc + 975f0b1 commit 2b3afa7

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

src/Symfony/Bundle/DependencyInjection/AutoMapperExtension.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use AutoMapper\Loader\FileLoader;
1616
use AutoMapper\Loader\FileReloadStrategy;
1717
use AutoMapper\Normalizer\AutoMapperNormalizer;
18+
use AutoMapper\Provider\ProviderInterface;
1819
use AutoMapper\Symfony\Bundle\CacheWarmup\CacheWarmer;
1920
use AutoMapper\Symfony\Bundle\ReflectionClassRecursiveIterator;
2021
use AutoMapper\Transformer\PropertyTransformer\PropertyTransformerInterface;
@@ -81,6 +82,8 @@ public function load(array $configs, ContainerBuilder $container): void
8182

8283
$container->registerForAutoconfiguration(PropertyTransformerInterface::class)->addTag('automapper.property_transformer');
8384

85+
$container->registerForAutoconfiguration(ProviderInterface::class)->addTag('automapper.provider');
86+
8487
if ($config['loader']['eval']) {
8588
$container
8689
->setAlias(ClassLoaderInterface::class, EvalLoader::class)

tests/Bundle/Resources/App/Entity/Cat.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
namespace AutoMapper\Tests\Bundle\Resources\App\Entity;
66

7+
use AutoMapper\Attribute\MapProvider;
8+
use AutoMapper\Tests\Bundle\Resources\App\Service\CatProvider;
9+
10+
#[MapProvider(CatProvider::class)]
711
class Cat extends Pet
812
{
913
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace AutoMapper\Tests\Bundle\Resources\App\Service;
6+
7+
use AutoMapper\Provider\ProviderInterface;
8+
use AutoMapper\Tests\Bundle\Resources\App\Entity\Cat;
9+
10+
class CatProvider implements ProviderInterface
11+
{
12+
public function provide(string $targetType, mixed $source, array $context): object|array|null
13+
{
14+
return new Cat();
15+
}
16+
}

0 commit comments

Comments
 (0)