@@ -937,8 +937,7 @@ private function registerValidationConfiguration(array $config, ContainerBuilder
937
937
$ container ->setParameter ('validator.translation_domain ' , $ config ['translation_domain ' ]);
938
938
939
939
$ files = array ('xml ' => array (), 'yml ' => array ());
940
- $ this ->getValidatorMappingFiles ($ container , $ files );
941
- $ this ->getValidatorMappingFilesFromConfig ($ config , $ files );
940
+ $ this ->registerValidatorMapping ($ container , $ config , $ files );
942
941
943
942
if (!empty ($ files ['xml ' ])) {
944
943
$ validatorBuilder ->addMethodCall ('addXmlMappings ' , array ($ files ['xml ' ]));
@@ -979,50 +978,53 @@ private function registerValidationConfiguration(array $config, ContainerBuilder
979
978
}
980
979
}
981
980
982
- private function getValidatorMappingFiles (ContainerBuilder $ container , array &$ files )
981
+ private function registerValidatorMapping (ContainerBuilder $ container, array $ config , array &$ files )
983
982
{
983
+ $ fileRecorder = function ($ extension , $ path ) use (&$ files ) {
984
+ $ files ['yaml ' === $ extension ? 'yml ' : $ extension ][] = $ path ;
985
+ };
986
+
984
987
if (interface_exists ('Symfony\Component\Form\FormInterface ' )) {
985
988
$ reflClass = new \ReflectionClass ('Symfony\Component\Form\FormInterface ' );
986
- $ files [ 'xml ' ][] = dirname ($ reflClass ->getFileName ()).'/Resources/config/validation.xml ' ;
989
+ $ fileRecorder ( 'xml ' , dirname ($ reflClass ->getFileName ()).'/Resources/config/validation.xml ' ) ;
987
990
}
988
991
989
992
foreach ($ container ->getParameter ('kernel.bundles_metadata ' ) as $ bundle ) {
990
993
$ dirname = $ bundle ['path ' ];
991
994
992
995
if ($ container ->fileExists ($ file = $ dirname .'/Resources/config/validation.yml ' , false )) {
993
- $ files [ 'yml ' ][] = $ file ;
996
+ $ fileRecorder ( 'yml ' , $ file) ;
994
997
}
995
998
996
999
if ($ container ->fileExists ($ file = $ dirname .'/Resources/config/validation.xml ' , false )) {
997
- $ files [ 'xml ' ][] = $ file ;
1000
+ $ fileRecorder ( 'xml ' , $ file) ;
998
1001
}
999
1002
1000
1003
if ($ container ->fileExists ($ dir = $ dirname .'/Resources/config/validation ' )) {
1001
- $ this ->getValidatorMappingFilesFromDir ($ dir , $ files );
1004
+ $ this ->registerMappingFilesFromDir ($ dir , $ fileRecorder );
1002
1005
}
1003
1006
}
1007
+
1008
+ $ this ->registerMappingFilesFromConfig ($ config , $ fileRecorder );
1004
1009
}
1005
1010
1006
- private function getValidatorMappingFilesFromDir ($ dir , array & $ files )
1011
+ private function registerMappingFilesFromDir ($ dir , callable $ fileRecorder )
1007
1012
{
1008
1013
foreach (Finder::create ()->followLinks ()->files ()->in ($ dir )->name ('/\.(xml|ya?ml)$/ ' ) as $ file ) {
1009
- $ extension = $ file ->getExtension ();
1010
- $ files ['yaml ' === $ extension ? 'yml ' : $ extension ][] = $ file ->getRealpath ();
1014
+ $ fileRecorder ($ file ->getExtension (), $ file ->getRealPath ());
1011
1015
}
1012
1016
}
1013
1017
1014
- private function getValidatorMappingFilesFromConfig (array $ config , array & $ files )
1018
+ private function registerMappingFilesFromConfig (array $ config , callable $ fileRecorder )
1015
1019
{
1016
1020
foreach ($ config ['mapping ' ]['paths ' ] as $ path ) {
1017
1021
if (is_dir ($ path )) {
1018
- $ this ->getValidatorMappingFilesFromDir ($ path , $ files );
1022
+ $ this ->registerMappingFilesFromDir ($ path , $ fileRecorder );
1019
1023
} elseif (is_file ($ path )) {
1020
- if (preg_match ('/\.(xml|ya?ml)$/ ' , $ path , $ matches )) {
1021
- $ extension = $ matches [1 ];
1022
- $ files ['yaml ' === $ extension ? 'yml ' : $ extension ][] = $ path ;
1023
- } else {
1024
+ if (!preg_match ('/\.(xml|ya?ml)$/ ' , $ path , $ matches )) {
1024
1025
throw new \RuntimeException (sprintf ('Unsupported mapping type in "%s", supported types are XML & Yaml. ' , $ path ));
1025
1026
}
1027
+ $ fileRecorder ($ matches [1 ], $ path );
1026
1028
} else {
1027
1029
throw new \RuntimeException (sprintf ('Could not open file or directory "%s". ' , $ path ));
1028
1030
}
@@ -1180,39 +1182,30 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
1180
1182
$ serializerLoaders [] = $ annotationLoader ;
1181
1183
}
1182
1184
1185
+ $ fileRecorder = function ($ extension , $ path ) use (&$ serializerLoaders ) {
1186
+ $ definition = new Definition (in_array ($ extension , array ('yaml ' , 'yml ' )) ? 'Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader ' : 'Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader ' , array ($ path ));
1187
+ $ definition ->setPublic (false );
1188
+ $ serializerLoaders [] = $ definition ;
1189
+ };
1190
+
1183
1191
foreach ($ container ->getParameter ('kernel.bundles_metadata ' ) as $ bundle ) {
1184
1192
$ dirname = $ bundle ['path ' ];
1185
1193
1186
1194
if ($ container ->fileExists ($ file = $ dirname .'/Resources/config/serialization.xml ' , false )) {
1187
- $ definition = new Definition ('Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader ' , array ($ file ));
1188
- $ definition ->setPublic (false );
1189
-
1190
- $ serializerLoaders [] = $ definition ;
1195
+ $ fileRecorder ('xml ' , $ file );
1191
1196
}
1192
1197
1193
1198
if ($ container ->fileExists ($ file = $ dirname .'/Resources/config/serialization.yml ' , false )) {
1194
- $ definition = new Definition ('Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader ' , array ($ file ));
1195
- $ definition ->setPublic (false );
1196
-
1197
- $ serializerLoaders [] = $ definition ;
1199
+ $ fileRecorder ('yml ' , $ file );
1198
1200
}
1199
1201
1200
1202
if ($ container ->fileExists ($ dir = $ dirname .'/Resources/config/serialization ' )) {
1201
- foreach (Finder::create ()->followLinks ()->files ()->in ($ dir )->name ('*.xml ' ) as $ file ) {
1202
- $ definition = new Definition ('Symfony\Component\Serializer\Mapping\Loader\XmlFileLoader ' , array ($ file ->getPathname ()));
1203
- $ definition ->setPublic (false );
1204
-
1205
- $ serializerLoaders [] = $ definition ;
1206
- }
1207
- foreach (Finder::create ()->followLinks ()->files ()->in ($ dir )->name ('*.yml ' ) as $ file ) {
1208
- $ definition = new Definition ('Symfony\Component\Serializer\Mapping\Loader\YamlFileLoader ' , array ($ file ->getPathname ()));
1209
- $ definition ->setPublic (false );
1210
-
1211
- $ serializerLoaders [] = $ definition ;
1212
- }
1203
+ $ this ->registerMappingFilesFromDir ($ dir , $ fileRecorder );
1213
1204
}
1214
1205
}
1215
1206
1207
+ $ this ->registerMappingFilesFromConfig ($ config , $ fileRecorder );
1208
+
1216
1209
$ chainLoader ->replaceArgument (0 , $ serializerLoaders );
1217
1210
$ container ->getDefinition ('serializer.mapping.cache_warmer ' )->replaceArgument (0 , $ serializerLoaders );
1218
1211
0 commit comments