/
githubmirror
/
symfony
Обзор
Документация
Войти
/
githubmirror
/
symfony
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
8.2
src/Symfony/Component/ObjectMapper/DependencyInjection/ReverseMappingPass.php
44 строки
1 KB
soyuka
[ObjectMapper] Handle N targets per source in reverse class map
16 июн 2026, 17:09
16 июн 2026, 17:09
4a7e199
Код
Авторство
О чём код?
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ObjectMapper\DependencyInjection; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\ContainerBuilder; /** * @author Florent Blaison <florent.blaison@gmail.com> */ final class ReverseMappingPass implements CompilerPassInterface { public function process(ContainerBuilder $container): void { if (!$container->hasDefinition('object_mapper.metadata_factory.reverse_class')) { return; } $reverseClassObjectMapperMetadataFactory = $container->getDefinition('object_mapper.metadata_factory.reverse_class'); $classes = []; foreach ($container->findTaggedResourceIds('object_mapper.map') as $tags) { foreach ($tags as $tag) { if (!isset($tag['source'], $tag['target'])) { continue; } if (!\in_array($tag['target'], $classes[$tag['source']] ?? [], true)) { $classes[$tag['source']][] = $tag['target']; } } } $reverseClassObjectMapperMetadataFactory->replaceArgument(1, $classes); } }