Mercurial > hg > isophonics-drupal-site
view vendor/symfony/class-loader/Psr4ClassLoader.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 4c8ae668cc8c |
children | 1fec387a4317 |
line wrap: on
line source
<?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ClassLoader; /** * A PSR-4 compatible class loader. * * See http://www.php-fig.org/psr/psr-4/ * * @author Alexander M. Turek <me@derrabus.de> */ class Psr4ClassLoader { /** * @var array */ private $prefixes = array(); /** * @param string $prefix * @param string $baseDir */ public function addPrefix($prefix, $baseDir) { $prefix = trim($prefix, '\\').'\\'; $baseDir = rtrim($baseDir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR; $this->prefixes[] = array($prefix, $baseDir); } /** * @param string $class * * @return string|null */ public function findFile($class) { $class = ltrim($class, '\\'); foreach ($this->prefixes as list($currentPrefix, $currentBaseDir)) { if (0 === strpos($class, $currentPrefix)) { $classWithoutPrefix = substr($class, strlen($currentPrefix)); $file = $currentBaseDir.str_replace('\\', DIRECTORY_SEPARATOR, $classWithoutPrefix).'.php'; if (file_exists($file)) { return $file; } } } } /** * @param string $class * * @return bool */ public function loadClass($class) { $file = $this->findFile($class); if (null !== $file) { require $file; return true; } return false; } /** * Registers this instance as an autoloader. * * @param bool $prepend */ public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); } /** * Removes this instance from the registered autoloaders. */ public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); } }