diff --git a/core/lib/Drupal/Component/Discovery/YamlDirectoryDiscovery.php b/core/lib/Drupal/Component/Discovery/YamlDirectoryDiscovery.php index 224c907..8cf45a1 100644 --- a/core/lib/Drupal/Component/Discovery/YamlDirectoryDiscovery.php +++ b/core/lib/Drupal/Component/Discovery/YamlDirectoryDiscovery.php @@ -125,15 +125,12 @@ protected function getIdentifier($file, array $data) { */ protected function findFiles() { $file_list = []; - $pattern = '/\.yml$/i'; - foreach ($this->directories as $provider => $directories) { $directories = (array) $directories; foreach ($directories as $directory) { if (is_dir($directory)) { - $files = new RegexDirectoryIterator($directory, $pattern); /** @var \SplFileInfo $fileInfo */ - foreach ($files as $fileInfo) { + foreach ($this->getDirectoryIterator($directory) as $fileInfo) { $file_list[$fileInfo->getPathname()] = $provider; } } @@ -142,4 +139,22 @@ protected function findFiles() { return $file_list; } + /** + * Gets an iterator to loop over the files in the provided directory. + * + * This method is exists so that it is easy to replace this functionality in + * a class that extends this one. For example, it could be used to make the + * scan recursive. + * + * @param $directory + * The directory to scan. + * + * @return \Traversable + * An \Traversable object or array where the values are \SplFileInfo + * objects. + */ + protected function getDirectoryIterator($directory) { + return new RegexDirectoryIterator($directory, '/\.yml$/i'); + } + }