You are here

public function Psr0FindFile::findFile in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php \Doctrine\Common\Reflection\Psr0FindFile::findFile()

Finds a class.

Parameters

string $class The name of the class.:

Return value

string|null The name of the class or NULL if not found.

Overrides ClassFinderInterface::findFile

File

vendor/doctrine/common/lib/Doctrine/Common/Reflection/Psr0FindFile.php, line 48

Class

Psr0FindFile
Finds a class in a PSR-0 structure.

Namespace

Doctrine\Common\Reflection

Code

public function findFile($class) {
  $lastNsPos = strrpos($class, '\\');
  if ('\\' == $class[0]) {
    $class = substr($class, 1);
  }
  if (false !== $lastNsPos) {

    // namespaced class name
    $classPath = str_replace('\\', DIRECTORY_SEPARATOR, substr($class, 0, $lastNsPos)) . DIRECTORY_SEPARATOR;
    $className = substr($class, $lastNsPos + 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 (is_file($dir . DIRECTORY_SEPARATOR . $classPath)) {
          return $dir . DIRECTORY_SEPARATOR . $classPath;
        }
      }
    }
  }
  return null;
}