Version 1
[yaffs-website] / vendor / symfony / class-loader / Psr4ClassLoader.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\ClassLoader;
13
14 /**
15  * A PSR-4 compatible class loader.
16  *
17  * See http://www.php-fig.org/psr/psr-4/
18  *
19  * @author Alexander M. Turek <me@derrabus.de>
20  */
21 class Psr4ClassLoader
22 {
23     /**
24      * @var array
25      */
26     private $prefixes = array();
27
28     /**
29      * @param string $prefix
30      * @param string $baseDir
31      */
32     public function addPrefix($prefix, $baseDir)
33     {
34         $prefix = trim($prefix, '\\').'\\';
35         $baseDir = rtrim($baseDir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR;
36         $this->prefixes[] = array($prefix, $baseDir);
37     }
38
39     /**
40      * @param string $class
41      *
42      * @return string|null
43      */
44     public function findFile($class)
45     {
46         $class = ltrim($class, '\\');
47
48         foreach ($this->prefixes as $current) {
49             list($currentPrefix, $currentBaseDir) = $current;
50             if (0 === strpos($class, $currentPrefix)) {
51                 $classWithoutPrefix = substr($class, strlen($currentPrefix));
52                 $file = $currentBaseDir.str_replace('\\', DIRECTORY_SEPARATOR, $classWithoutPrefix).'.php';
53                 if (file_exists($file)) {
54                     return $file;
55                 }
56             }
57         }
58     }
59
60     /**
61      * @param string $class
62      *
63      * @return bool
64      */
65     public function loadClass($class)
66     {
67         $file = $this->findFile($class);
68         if (null !== $file) {
69             require $file;
70
71             return true;
72         }
73
74         return false;
75     }
76
77     /**
78      * Registers this instance as an autoloader.
79      *
80      * @param bool $prepend
81      */
82     public function register($prepend = false)
83     {
84         spl_autoload_register(array($this, 'loadClass'), true, $prepend);
85     }
86
87     /**
88      * Removes this instance from the registered autoloaders.
89      */
90     public function unregister()
91     {
92         spl_autoload_unregister(array($this, 'loadClass'));
93     }
94 }