a57cac3b5ee9977f946d0cfc97f817cd3b5ae0c5
[yaffs-website] / vendor / symfony / dependency-injection / Loader / DirectoryLoader.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\DependencyInjection\Loader;
13
14 /**
15  * DirectoryLoader is a recursive loader to go through directories.
16  *
17  * @author Sebastien Lavoie <seb@wemakecustom.com>
18  */
19 class DirectoryLoader extends FileLoader
20 {
21     /**
22      * {@inheritdoc}
23      */
24     public function load($file, $type = null)
25     {
26         $file = rtrim($file, '/');
27         $path = $this->locator->locate($file);
28         $this->container->fileExists($path, false);
29
30         foreach (scandir($path) as $dir) {
31             if ('.' !== $dir[0]) {
32                 if (is_dir($path.'/'.$dir)) {
33                     $dir .= '/'; // append / to allow recursion
34                 }
35
36                 $this->setCurrentDir($path);
37
38                 $this->import($dir, null, false, $path);
39             }
40         }
41     }
42
43     /**
44      * {@inheritdoc}
45      */
46     public function supports($resource, $type = null)
47     {
48         if ('directory' === $type) {
49             return true;
50         }
51
52         return null === $type && \is_string($resource) && '/' === substr($resource, -1);
53     }
54 }