public function ClassLoader::findFile

Same name in this branch
  1. 9.x drupal/core/vendor/composer/ClassLoader.php \Composer\Autoload\ClassLoader::findFile()
  2. 9.x drupal/core/vendor/symfony/class-loader/Symfony/Component/ClassLoader/ClassLoader.php \Symfony\Component\ClassLoader\ClassLoader::findFile()

Finds the path to the file where the class is defined.

Parameters

string $class The name of the class:

Return value

string|null The path, if found

1 call to ClassLoader::findFile()
ClassLoader::loadClass in drupal/core/vendor/composer/ClassLoader.php
Loads the given class or interface.

File

drupal/core/vendor/composer/ClassLoader.php, line 163

Class

ClassLoader
ClassLoader implements a PSR-0 class loader

Namespace

Composer\Autoload

Code

public function findFile($class) {
  if ('\\' == $class[0]) {
    $class = substr($class, 1);
  }
  if (isset($this->classMap[$class])) {
    return $this->classMap[$class];
  }
  if (false !== ($pos = strrpos($class, '\\'))) {

    // namespaced class name
    $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $pos)) . DIRECTORY_SEPARATOR;
    $className = substr($class, $pos + 1);
  }
  else {

    // PEAR-like class name
    $classPath = null;
    $className = $class;
  }
  $classPath .= str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
  foreach ($this->prefixes as $prefix => $dirs) {
    if (0 === strpos($class, $prefix)) {
      foreach ($dirs as $dir) {
        if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) {
          return $dir . DIRECTORY_SEPARATOR . $classPath;
        }
      }
    }
  }
  foreach ($this->fallbackDirs as $dir) {
    if (file_exists($dir . DIRECTORY_SEPARATOR . $classPath)) {
      return $dir . DIRECTORY_SEPARATOR . $classPath;
    }
  }
  if ($this->useIncludePath && ($file = stream_resolve_include_path($classPath))) {
    return $file;
  }
  return $this->classMap[$class] = false;
}