You are here

private function ClassLoader::findFileWithExtension in Automatic Updates 7

Same name and namespace in other branches
  1. 8 vendor/composer/ClassLoader.php \Composer\Autoload\ClassLoader::findFileWithExtension()
1 call to ClassLoader::findFileWithExtension()
ClassLoader::findFile in vendor/composer/ClassLoader.php
Finds the path to the file where the class is defined.

File

vendor/composer/ClassLoader.php, line 370

Class

ClassLoader
ClassLoader implements a PSR-0, PSR-4 and classmap class loader.

Namespace

Composer\Autoload

Code

private function findFileWithExtension($class, $ext) {

  // PSR-4 lookup
  $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
  $first = $class[0];
  if (isset($this->prefixLengthsPsr4[$first])) {
    $subPath = $class;
    while (false !== ($lastPos = strrpos($subPath, '\\'))) {
      $subPath = substr($subPath, 0, $lastPos);
      $search = $subPath . '\\';
      if (isset($this->prefixDirsPsr4[$search])) {
        $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
        foreach ($this->prefixDirsPsr4[$search] as $dir) {
          if (file_exists($file = $dir . $pathEnd)) {
            return $file;
          }
        }
      }
    }
  }

  // PSR-4 fallback dirs
  foreach ($this->fallbackDirsPsr4 as $dir) {
    if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
      return $file;
    }
  }

  // PSR-0 lookup
  if (false !== ($pos = strrpos($class, '\\'))) {

    // namespaced class name
    $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
  }
  else {

    // PEAR-like class name
    $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
  }
  if (isset($this->prefixesPsr0[$first])) {
    foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
      if (0 === strpos($class, $prefix)) {
        foreach ($dirs as $dir) {
          if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
            return $file;
          }
        }
      }
    }
  }

  // PSR-0 fallback dirs
  foreach ($this->fallbackDirsPsr0 as $dir) {
    if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
      return $file;
    }
  }

  // PSR-0 include paths.
  if ($this->useIncludePath && ($file = stream_resolve_include_path($logicalPathPsr0))) {
    return $file;
  }
  return false;
}