Chris@14
|
1 <?php
|
Chris@14
|
2
|
Chris@14
|
3 /*
|
Chris@14
|
4 * This file is part of the Symfony package.
|
Chris@14
|
5 *
|
Chris@14
|
6 * (c) Fabien Potencier <fabien@symfony.com>
|
Chris@14
|
7 *
|
Chris@14
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@14
|
9 * file that was distributed with this source code.
|
Chris@14
|
10 */
|
Chris@14
|
11
|
Chris@14
|
12 namespace Symfony\Component\Routing\Loader\Configurator;
|
Chris@14
|
13
|
Chris@14
|
14 use Symfony\Component\Routing\Loader\PhpFileLoader;
|
Chris@14
|
15 use Symfony\Component\Routing\RouteCollection;
|
Chris@14
|
16
|
Chris@14
|
17 /**
|
Chris@14
|
18 * @author Nicolas Grekas <p@tchwork.com>
|
Chris@14
|
19 */
|
Chris@14
|
20 class RoutingConfigurator
|
Chris@14
|
21 {
|
Chris@14
|
22 use Traits\AddTrait;
|
Chris@14
|
23
|
Chris@14
|
24 private $loader;
|
Chris@14
|
25 private $path;
|
Chris@14
|
26 private $file;
|
Chris@14
|
27
|
Chris@14
|
28 public function __construct(RouteCollection $collection, PhpFileLoader $loader, $path, $file)
|
Chris@14
|
29 {
|
Chris@14
|
30 $this->collection = $collection;
|
Chris@14
|
31 $this->loader = $loader;
|
Chris@14
|
32 $this->path = $path;
|
Chris@14
|
33 $this->file = $file;
|
Chris@14
|
34 }
|
Chris@14
|
35
|
Chris@14
|
36 /**
|
Chris@14
|
37 * @return ImportConfigurator
|
Chris@14
|
38 */
|
Chris@14
|
39 final public function import($resource, $type = null, $ignoreErrors = false)
|
Chris@14
|
40 {
|
Chris@17
|
41 $this->loader->setCurrentDir(\dirname($this->path));
|
Chris@14
|
42 $imported = $this->loader->import($resource, $type, $ignoreErrors, $this->file);
|
Chris@17
|
43 if (!\is_array($imported)) {
|
Chris@14
|
44 return new ImportConfigurator($this->collection, $imported);
|
Chris@14
|
45 }
|
Chris@14
|
46
|
Chris@14
|
47 $mergedCollection = new RouteCollection();
|
Chris@14
|
48 foreach ($imported as $subCollection) {
|
Chris@14
|
49 $mergedCollection->addCollection($subCollection);
|
Chris@14
|
50 }
|
Chris@14
|
51
|
Chris@14
|
52 return new ImportConfigurator($this->collection, $mergedCollection);
|
Chris@14
|
53 }
|
Chris@14
|
54
|
Chris@14
|
55 /**
|
Chris@14
|
56 * @return CollectionConfigurator
|
Chris@14
|
57 */
|
Chris@14
|
58 final public function collection($name = '')
|
Chris@14
|
59 {
|
Chris@14
|
60 return new CollectionConfigurator($this->collection, $name);
|
Chris@14
|
61 }
|
Chris@14
|
62 }
|