Mercurial > hg > isophonics-drupal-site
diff vendor/symfony/dependency-injection/Loader/PhpFileLoader.php @ 14:1fec387a4317
Update Drupal core to 8.5.2 via Composer
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:46:53 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line diff
--- a/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php Mon Apr 23 09:33:26 2018 +0100 +++ b/vendor/symfony/dependency-injection/Loader/PhpFileLoader.php Mon Apr 23 09:46:53 2018 +0100 @@ -11,7 +11,7 @@ namespace Symfony\Component\DependencyInjection\Loader; -use Symfony\Component\Config\Resource\FileResource; +use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; /** * PhpFileLoader loads service definitions from a PHP file. @@ -34,9 +34,18 @@ $path = $this->locator->locate($resource); $this->setCurrentDir(dirname($path)); - $this->container->addResource(new FileResource($path)); + $this->container->fileExists($path); - include $path; + // the closure forbids access to the private scope in the included file + $load = \Closure::bind(function ($path) use ($container, $loader, $resource, $type) { + return include $path; + }, $this, ProtectedPhpFileLoader::class); + + $callback = $load($path); + + if ($callback instanceof \Closure) { + $callback(new ContainerConfigurator($this->container, $this, $this->instanceof, $path, $resource), $this->container, $this); + } } /** @@ -44,6 +53,21 @@ */ public function supports($resource, $type = null) { - return is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION); + if (!is_string($resource)) { + return false; + } + + if (null === $type && 'php' === pathinfo($resource, PATHINFO_EXTENSION)) { + return true; + } + + return 'php' === $type; } } + +/** + * @internal + */ +final class ProtectedPhpFileLoader extends PhpFileLoader +{ +}