annotate vendor/symfony/class-loader/Psr4ClassLoader.php @ 8:50b0d041100e

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