You are here

class Psr4ClassLoader in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/class-loader/Psr4ClassLoader.php \Symfony\Component\ClassLoader\Psr4ClassLoader

A PSR-4 compatible class loader.

See http://www.php-fig.org/psr/psr-4/

@author Alexander M. Turek <me@derrabus.de>

Hierarchy

Expanded class hierarchy of Psr4ClassLoader

1 file declares its use of Psr4ClassLoader
Psr4ClassLoaderTest.php in vendor/symfony/class-loader/Tests/Psr4ClassLoaderTest.php

File

vendor/symfony/class-loader/Psr4ClassLoader.php, line 21

Namespace

Symfony\Component\ClassLoader
View source
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 $current) {
      list($currentPrefix, $currentBaseDir) = $current;
      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',
    ));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Psr4ClassLoader::$prefixes private property
Psr4ClassLoader::addPrefix public function
Psr4ClassLoader::findFile public function
Psr4ClassLoader::loadClass public function
Psr4ClassLoader::register public function Registers this instance as an autoloader.
Psr4ClassLoader::unregister public function Removes this instance from the registered autoloaders.