aboutsummaryrefslogtreecommitdiffhomepage
path: root/assets/php/vendor/symfony/routing/Loader/PhpFileLoader.php
diff options
context:
space:
mode:
Diffstat (limited to 'assets/php/vendor/symfony/routing/Loader/PhpFileLoader.php')
-rw-r--r--assets/php/vendor/symfony/routing/Loader/PhpFileLoader.php75
1 files changed, 75 insertions, 0 deletions
diff --git a/assets/php/vendor/symfony/routing/Loader/PhpFileLoader.php b/assets/php/vendor/symfony/routing/Loader/PhpFileLoader.php
new file mode 100644
index 0000000..3fcd692
--- /dev/null
+++ b/assets/php/vendor/symfony/routing/Loader/PhpFileLoader.php
@@ -0,0 +1,75 @@
+<?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\Config\Resource\FileResource;
+use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
+use Symfony\Component\Routing\RouteCollection;
+
+/**
+ * PhpFileLoader loads routes from a PHP file.
+ *
+ * The file must return a RouteCollection instance.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ */
+class PhpFileLoader extends FileLoader
+{
+ /**
+ * Loads a PHP file.
+ *
+ * @param string $file A PHP file path
+ * @param string|null $type The resource type
+ *
+ * @return RouteCollection A RouteCollection instance
+ */
+ public function load($file, $type = null)
+ {
+ $path = $this->locator->locate($file);
+ $this->setCurrentDir(dirname($path));
+
+ // the closure forbids access to the private scope in the included file
+ $loader = $this;
+ $load = \Closure::bind(function ($file) use ($loader) {
+ return include $file;
+ }, null, ProtectedPhpFileLoader::class);
+
+ $result = $load($path);
+
+ if ($result instanceof \Closure) {
+ $collection = new RouteCollection();
+ $result(new RoutingConfigurator($collection, $this, $path, $file), $this);
+ } else {
+ $collection = $result;
+ }
+
+ $collection->addResource(new FileResource($path));
+
+ return $collection;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function supports($resource, $type = null)
+ {
+ return is_string($resource) && 'php' === pathinfo($resource, PATHINFO_EXTENSION) && (!$type || 'php' === $type);
+ }
+}
+
+/**
+ * @internal
+ */
+final class ProtectedPhpFileLoader extends PhpFileLoader
+{
+}