[DI][Routing] Fix tracking of globbed resources
This commit is contained in:
parent
0023f4e84d
commit
ad98c1fa90
@ -38,7 +38,7 @@
|
|||||||
<argument type="service" id="file_locator" />
|
<argument type="service" id="file_locator" />
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service id="routing.loader.glob" class="Symfony\Component\Config\Loader\GlobFileLoader">
|
<service id="routing.loader.glob" class="Symfony\Component\Routing\Loader\GlobFileLoader">
|
||||||
<tag name="routing.loader" />
|
<tag name="routing.loader" />
|
||||||
<argument type="service" id="file_locator" />
|
<argument type="service" id="file_locator" />
|
||||||
</service>
|
</service>
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
"symfony/polyfill-mbstring": "~1.0",
|
"symfony/polyfill-mbstring": "~1.0",
|
||||||
"symfony/filesystem": "~2.8|~3.0|~4.0",
|
"symfony/filesystem": "~2.8|~3.0|~4.0",
|
||||||
"symfony/finder": "~2.8|~3.0|~4.0",
|
"symfony/finder": "~2.8|~3.0|~4.0",
|
||||||
"symfony/routing": "~3.4|~4.0"
|
"symfony/routing": "^3.4.5|^4.0.5"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"doctrine/cache": "~1.0",
|
"doctrine/cache": "~1.0",
|
||||||
|
@ -0,0 +1,40 @@
|
|||||||
|
<?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\DependencyInjection\Loader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GlobFileLoader loads files from a glob pattern.
|
||||||
|
*
|
||||||
|
* @author Nicolas Grekas <p@tchwork.com>
|
||||||
|
*/
|
||||||
|
class GlobFileLoader extends FileLoader
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function load($resource, $type = null)
|
||||||
|
{
|
||||||
|
foreach ($this->glob($resource, false, $globResource) as $path => $info) {
|
||||||
|
$this->import($path);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->container->addResource($globResource);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function supports($resource, $type = null)
|
||||||
|
{
|
||||||
|
return 'glob' === $type;
|
||||||
|
}
|
||||||
|
}
|
@ -22,6 +22,7 @@ use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
|||||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||||
use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
|
use Symfony\Component\DependencyInjection\Loader\IniFileLoader;
|
||||||
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
||||||
|
use Symfony\Component\DependencyInjection\Loader\GlobFileLoader;
|
||||||
use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
|
use Symfony\Component\DependencyInjection\Loader\DirectoryLoader;
|
||||||
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
|
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
|
||||||
use Symfony\Component\Filesystem\Filesystem;
|
use Symfony\Component\Filesystem\Filesystem;
|
||||||
@ -32,7 +33,6 @@ use Symfony\Component\HttpKernel\Config\EnvParametersResource;
|
|||||||
use Symfony\Component\HttpKernel\Config\FileLocator;
|
use Symfony\Component\HttpKernel\Config\FileLocator;
|
||||||
use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
|
use Symfony\Component\HttpKernel\DependencyInjection\MergeExtensionConfigurationPass;
|
||||||
use Symfony\Component\HttpKernel\DependencyInjection\AddAnnotatedClassesToCachePass;
|
use Symfony\Component\HttpKernel\DependencyInjection\AddAnnotatedClassesToCachePass;
|
||||||
use Symfony\Component\Config\Loader\GlobFileLoader;
|
|
||||||
use Symfony\Component\Config\Loader\LoaderResolver;
|
use Symfony\Component\Config\Loader\LoaderResolver;
|
||||||
use Symfony\Component\Config\Loader\DelegatingLoader;
|
use Symfony\Component\Config\Loader\DelegatingLoader;
|
||||||
use Symfony\Component\Config\ConfigCache;
|
use Symfony\Component\Config\ConfigCache;
|
||||||
@ -880,7 +880,7 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl
|
|||||||
new YamlFileLoader($container, $locator),
|
new YamlFileLoader($container, $locator),
|
||||||
new IniFileLoader($container, $locator),
|
new IniFileLoader($container, $locator),
|
||||||
new PhpFileLoader($container, $locator),
|
new PhpFileLoader($container, $locator),
|
||||||
new GlobFileLoader($locator),
|
new GlobFileLoader($container, $locator),
|
||||||
new DirectoryLoader($container, $locator),
|
new DirectoryLoader($container, $locator),
|
||||||
new ClosureLoader($container),
|
new ClosureLoader($container),
|
||||||
));
|
));
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
"symfony/config": "~2.8|~3.0|~4.0",
|
"symfony/config": "~2.8|~3.0|~4.0",
|
||||||
"symfony/console": "~2.8|~3.0|~4.0",
|
"symfony/console": "~2.8|~3.0|~4.0",
|
||||||
"symfony/css-selector": "~2.8|~3.0|~4.0",
|
"symfony/css-selector": "~2.8|~3.0|~4.0",
|
||||||
"symfony/dependency-injection": "~3.4|~4.0",
|
"symfony/dependency-injection": "^3.4.5|^4.0.5",
|
||||||
"symfony/dom-crawler": "~2.8|~3.0|~4.0",
|
"symfony/dom-crawler": "~2.8|~3.0|~4.0",
|
||||||
"symfony/expression-language": "~2.8|~3.0|~4.0",
|
"symfony/expression-language": "~2.8|~3.0|~4.0",
|
||||||
"symfony/finder": "~2.8|~3.0|~4.0",
|
"symfony/finder": "~2.8|~3.0|~4.0",
|
||||||
@ -45,7 +45,7 @@
|
|||||||
},
|
},
|
||||||
"conflict": {
|
"conflict": {
|
||||||
"symfony/config": "<2.8",
|
"symfony/config": "<2.8",
|
||||||
"symfony/dependency-injection": "<3.4",
|
"symfony/dependency-injection": "<3.4.5|<4.0.5,>=4",
|
||||||
"symfony/var-dumper": "<3.3",
|
"symfony/var-dumper": "<3.3",
|
||||||
"twig/twig": "<1.34|<2.4,>=2"
|
"twig/twig": "<1.34|<2.4,>=2"
|
||||||
},
|
},
|
||||||
|
47
src/Symfony/Component/Routing/Loader/GlobFileLoader.php
Normal file
47
src/Symfony/Component/Routing/Loader/GlobFileLoader.php
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
<?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\Routing\Loader;
|
||||||
|
|
||||||
|
use Symfony\Component\Config\Loader\FileLoader;
|
||||||
|
use Symfony\Component\Routing\RouteCollection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GlobFileLoader loads files from a glob pattern.
|
||||||
|
*
|
||||||
|
* @author Nicolas Grekas <p@tchwork.com>
|
||||||
|
*/
|
||||||
|
class GlobFileLoader extends FileLoader
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function load($resource, $type = null)
|
||||||
|
{
|
||||||
|
$collection = new RouteCollection();
|
||||||
|
|
||||||
|
foreach ($this->glob($resource, false, $globResource) as $path => $info) {
|
||||||
|
$collection->addCollection($this->import($path));
|
||||||
|
}
|
||||||
|
|
||||||
|
$collection->addResource($globResource);
|
||||||
|
|
||||||
|
return $collection;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
public function supports($resource, $type = null)
|
||||||
|
{
|
||||||
|
return 'glob' === $type;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user