class ClassFinder

Same name and namespace in other branches
  1. 9 core/lib/Drupal/Component/ClassFinder/ClassFinder.php \Drupal\Component\ClassFinder\ClassFinder
  2. 8.9.x core/lib/Drupal/Component/ClassFinder/ClassFinder.php \Drupal\Component\ClassFinder\ClassFinder
  3. 10 core/lib/Drupal/Component/ClassFinder/ClassFinder.php \Drupal\Component\ClassFinder\ClassFinder

A Utility class that uses active autoloaders to find a file for a class.

Hierarchy

Expanded class hierarchy of ClassFinder

2 files declare their use of ClassFinder
AnnotatedClassDiscoveryAutomatedProviders.php in core/modules/migrate/src/Plugin/Discovery/AnnotatedClassDiscoveryAutomatedProviders.php
ClassFinderTest.php in core/tests/Drupal/Tests/Component/ClassFinder/ClassFinderTest.php

File

core/lib/Drupal/Component/ClassFinder/ClassFinder.php, line 8

Namespace

Drupal\Component\ClassFinder
View source
class ClassFinder implements ClassFinderInterface {
    
    /**
     * {@inheritdoc}
     */
    public function findFile($class) {
        $loaders = spl_autoload_functions();
        foreach ($loaders as $loader) {
            if (is_array($loader) && isset($loader[0]) && is_object($loader[0]) && method_exists($loader[0], 'findFile')) {
                $file = call_user_func_array([
                    $loader[0],
                    'findFile',
                ], [
                    $class,
                ]);
                // Different implementations return different empty values. For example,
                // \Composer\Autoload\ClassLoader::findFile() returns FALSE whilst
                // \Drupal\Component\ClassFinder\ClassFinderInterface::findFile()
                // documents that a NULL should be returned.
                if (!empty($file)) {
                    return $file;
                }
            }
        }
        return NULL;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
ClassFinder::findFile public function Finds a class. Overrides ClassFinderInterface::findFile

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.