From 29802a259b1949a62cd8a3a6f83be3dbf1165715 Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Mon, 29 May 2017 10:09:00 +0200 Subject: [PATCH] [Config] Fallback to regular import when glob fails --- .../Component/Config/Loader/FileLoader.php | 15 +++++++-------- .../Config/Tests/Loader/FileLoaderTest.php | 8 ++++++++ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Symfony/Component/Config/Loader/FileLoader.php b/src/Symfony/Component/Config/Loader/FileLoader.php index 6119e5a5b1118..d3fe0eacfc0d9 100644 --- a/src/Symfony/Component/Config/Loader/FileLoader.php +++ b/src/Symfony/Component/Config/Loader/FileLoader.php @@ -83,18 +83,17 @@ public function getLocator() */ public function import($resource, $type = null, $ignoreErrors = false, $sourceResource = null) { - $ret = array(); - $ct = 0; - if (!is_string($resource) || false === strpbrk($resource, '*?{[')) { - $ret[] = $this->doImport($resource, $type, $ignoreErrors, $sourceResource); - } else { - foreach ($this->glob($resource, false, $_, $ignoreErrors) as $path => $info) { - ++$ct; + if (is_string($resource) && false !== strpbrk($resource, '*?{[')) { + $ret = array(); + foreach ($this->glob($resource, false, $_, true) as $path => $info) { $ret[] = $this->doImport($path, $type, $ignoreErrors, $sourceResource); } + if ($ret) { + return count($ret) > 1 ? $ret : $ret[0]; + } } - return $ct > 1 ? $ret : (isset($ret[0]) ? $ret[0] : null); + return $this->doImport($resource, $type, $ignoreErrors, $sourceResource); } /** diff --git a/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php b/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php index e1d23e45fa6d1..59b625525bff1 100644 --- a/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php +++ b/src/Symfony/Component/Config/Tests/Loader/FileLoaderTest.php @@ -66,6 +66,14 @@ public function testImportWithFileLocatorDelegation() $this->assertInstanceOf('Symfony\Component\Config\Exception\FileLoaderImportCircularReferenceException', $e, '->import() throws a FileLoaderImportCircularReferenceException if the resource is already loading'); } } + + public function testImportWithGlobLikeResource() + { + $locatorMock = $this->getMockBuilder('Symfony\Component\Config\FileLocatorInterface')->getMock(); + $loader = new TestFileLoader($locatorMock); + + $this->assertSame('[foo]', $loader->import('[foo]')); + } } class TestFileLoader extends FileLoader