3838use  Doctrine \ORM \Tools \Console \Command \EnsureProductionSettingsCommand ;
3939use  Doctrine \ORM \Tools \Export \ClassMetadataExporter ;
4040use  Doctrine \ORM \UnitOfWork ;
41+ use  Doctrine \Persistence \Mapping \Driver \FilePathNameIterator ;
4142use  Doctrine \Persistence \Mapping \Driver \MappingDriverChain ;
4243use  Doctrine \Persistence \Mapping \Driver \PHPDriver ;
4344use  Doctrine \Persistence \Mapping \Driver \StaticPHPDriver ;
6162use  Symfony \Component \DependencyInjection \Loader \XmlFileLoader ;
6263use  Symfony \Component \DependencyInjection \Reference ;
6364use  Symfony \Component \ExpressionLanguage \ExpressionLanguage ;
65+ use  Symfony \Component \Finder \Finder ;
6466use  Symfony \Component \Form \AbstractType ;
6567use  Symfony \Component \Messenger \Bridge \Doctrine \Transport \DoctrineTransportFactory ;
6668use  Symfony \Component \Messenger \MessageBusInterface ;
@@ -881,6 +883,12 @@ protected function loadOrmEntityManagerMappingInformation(array $entityManager,
881883                $ args [2 ] = $ entityManager ['report_fields_where_declared ' ];
882884            } elseif  ($ driverType  === 'attribute ' ) {
883885                $ args [1 ] = $ entityManager ['report_fields_where_declared ' ];
886+ 
887+                 /** @var string[] $directoryPaths */ 
888+                 $ directoryPaths  = $ args [0 ];
889+                 $ filesIterator  = $ this  ->registerFilesIteratorService ($ entityManager ['name ' ] . '_ '  . $ driverType , $ container , $ directoryPaths );
890+ 
891+                 $ args [0 ] = new  Reference ($ filesIterator );
884892            } elseif  ($ driverType  === 'xml ' ) {
885893                $ args [1 ] ??= SimplifiedXmlDriver::DEFAULT_FILE_EXTENSION ;
886894                $ args [2 ]   = $ entityManager ['validate_xml_mapping ' ];
@@ -894,6 +902,29 @@ protected function loadOrmEntityManagerMappingInformation(array $entityManager,
894902        $ ormConfigDef ->addMethodCall ('setEntityNamespaces ' , [$ this  ->aliasMap ]);
895903    }
896904
905+     /** @param string[] $dirs */ 
906+     private  function  registerFilesIteratorService (string  $ servicePrefix , ContainerBuilder   $ container , array  $ dirs ): string 
907+     {
908+         $ finderService  = $ this  ->getObjectManagerElementName ($ servicePrefix .'_mapping_files_finder ' );
909+ 
910+         if  ($ container ->hasDefinition ($ finderService )) {
911+             $ finderDefinition  = $ container ->getDefinition ($ finderService );
912+         } else  {
913+             $ finderDefinition  = new  Definition (Finder::class, []);
914+         }
915+ 
916+         $ finderDefinition ->addMethodCall ('files ' );
917+         $ finderDefinition ->addMethodCall ('in ' , [$ dirs ]);
918+         $ finderDefinition ->addMethodCall ('name ' , ['*.php ' ]);
919+ 
920+         $ container ->setDefinition ($ finderService , $ finderDefinition );
921+ 
922+         $ filesIterator  = $ this  ->getObjectManagerElementName ($ servicePrefix .'_mapping_files_iterator ' );
923+         $ container ->setDefinition ($ filesIterator , new  Definition (FilePathNameIterator::class, [new  Reference ($ finderService )]));
924+ 
925+         return  $ filesIterator ;
926+     }
927+ 
897928    /** 
898929     * Loads an ORM second level cache bundle mapping information. 
899930     * 
0 commit comments