-
-
Notifications
You must be signed in to change notification settings - Fork 9.8k
Closed
Description
For context: #42450
Basically DI extensions and the kernel use a separeate file loader instance.
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.xml');should look familiar to many of us :) constructing the new PhpFileLoader is more painful.
However, the kernel, uses a powerful delegating one:
symfony/src/Symfony/Component/HttpKernel/Kernel.php
Lines 757 to 772 in 76a414c
| protected function getContainerLoader(ContainerInterface $container) | |
| { | |
| $env = $this->getEnvironment(); | |
| $locator = new FileLocator($this); | |
| $resolver = new LoaderResolver([ | |
| new XmlFileLoader($container, $locator, $env), | |
| new YamlFileLoader($container, $locator, $env), | |
| new IniFileLoader($container, $locator, $env), | |
| new PhpFileLoader($container, $locator, $env, class_exists(ConfigBuilderGenerator::class) ? new ConfigBuilderGenerator($this->getBuildDir()) : null), | |
| new GlobFileLoader($container, $locator, $env), | |
| new DirectoryLoader($container, $locator, $env), | |
| new ClosureLoader($container, $env), | |
| ]); | |
| return new DelegatingLoader($resolver); | |
| } |
What about leveraging it in extensions? Could we? Eg. receive it as argument, $loader->load(__DIR__.'/../Resources/config/services.xml');, and done :)
Maybe a ScopedLoader to provide a basepath for decoration? Or out-of-the-box bundle paths like @My/Resources/config/services.xml. But i actually tend to prefer explicit absolute paths (local PHP vars/runtime FTW).
WDYT?
sstokchapterjason