Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 * This file is part of the Symfony package.
|
Chris@0
|
5 *
|
Chris@0
|
6 * (c) Fabien Potencier <fabien@symfony.com>
|
Chris@0
|
7 *
|
Chris@0
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
9 * file that was distributed with this source code.
|
Chris@0
|
10 */
|
Chris@0
|
11
|
Chris@0
|
12 namespace Symfony\Component\ClassLoader;
|
Chris@0
|
13
|
Chris@14
|
14 @trigger_error('The '.__NAMESPACE__.'\Psr4ClassLoader class is deprecated since Symfony 3.3 and will be removed in 4.0. Use Composer instead.', E_USER_DEPRECATED);
|
Chris@14
|
15
|
Chris@0
|
16 /**
|
Chris@0
|
17 * A PSR-4 compatible class loader.
|
Chris@0
|
18 *
|
Chris@0
|
19 * See http://www.php-fig.org/psr/psr-4/
|
Chris@0
|
20 *
|
Chris@0
|
21 * @author Alexander M. Turek <me@derrabus.de>
|
Chris@14
|
22 *
|
Chris@14
|
23 * @deprecated since version 3.3, to be removed in 4.0.
|
Chris@0
|
24 */
|
Chris@0
|
25 class Psr4ClassLoader
|
Chris@0
|
26 {
|
Chris@17
|
27 private $prefixes = [];
|
Chris@0
|
28
|
Chris@0
|
29 /**
|
Chris@0
|
30 * @param string $prefix
|
Chris@0
|
31 * @param string $baseDir
|
Chris@0
|
32 */
|
Chris@0
|
33 public function addPrefix($prefix, $baseDir)
|
Chris@0
|
34 {
|
Chris@0
|
35 $prefix = trim($prefix, '\\').'\\';
|
Chris@17
|
36 $baseDir = rtrim($baseDir, \DIRECTORY_SEPARATOR).\DIRECTORY_SEPARATOR;
|
Chris@17
|
37 $this->prefixes[] = [$prefix, $baseDir];
|
Chris@0
|
38 }
|
Chris@0
|
39
|
Chris@0
|
40 /**
|
Chris@0
|
41 * @param string $class
|
Chris@0
|
42 *
|
Chris@0
|
43 * @return string|null
|
Chris@0
|
44 */
|
Chris@0
|
45 public function findFile($class)
|
Chris@0
|
46 {
|
Chris@0
|
47 $class = ltrim($class, '\\');
|
Chris@0
|
48
|
Chris@0
|
49 foreach ($this->prefixes as list($currentPrefix, $currentBaseDir)) {
|
Chris@0
|
50 if (0 === strpos($class, $currentPrefix)) {
|
Chris@17
|
51 $classWithoutPrefix = substr($class, \strlen($currentPrefix));
|
Chris@17
|
52 $file = $currentBaseDir.str_replace('\\', \DIRECTORY_SEPARATOR, $classWithoutPrefix).'.php';
|
Chris@0
|
53 if (file_exists($file)) {
|
Chris@0
|
54 return $file;
|
Chris@0
|
55 }
|
Chris@0
|
56 }
|
Chris@0
|
57 }
|
Chris@0
|
58 }
|
Chris@0
|
59
|
Chris@0
|
60 /**
|
Chris@0
|
61 * @param string $class
|
Chris@0
|
62 *
|
Chris@0
|
63 * @return bool
|
Chris@0
|
64 */
|
Chris@0
|
65 public function loadClass($class)
|
Chris@0
|
66 {
|
Chris@0
|
67 $file = $this->findFile($class);
|
Chris@0
|
68 if (null !== $file) {
|
Chris@0
|
69 require $file;
|
Chris@0
|
70
|
Chris@0
|
71 return true;
|
Chris@0
|
72 }
|
Chris@0
|
73
|
Chris@0
|
74 return false;
|
Chris@0
|
75 }
|
Chris@0
|
76
|
Chris@0
|
77 /**
|
Chris@0
|
78 * Registers this instance as an autoloader.
|
Chris@0
|
79 *
|
Chris@0
|
80 * @param bool $prepend
|
Chris@0
|
81 */
|
Chris@0
|
82 public function register($prepend = false)
|
Chris@0
|
83 {
|
Chris@17
|
84 spl_autoload_register([$this, 'loadClass'], true, $prepend);
|
Chris@0
|
85 }
|
Chris@0
|
86
|
Chris@0
|
87 /**
|
Chris@0
|
88 * Removes this instance from the registered autoloaders.
|
Chris@0
|
89 */
|
Chris@0
|
90 public function unregister()
|
Chris@0
|
91 {
|
Chris@17
|
92 spl_autoload_unregister([$this, 'loadClass']);
|
Chris@0
|
93 }
|
Chris@0
|
94 }
|