function xautoload_ClassFinder_Prefix::findFile in X Autoload 7.3
Same name and namespace in other branches
- 7.2 lib/ClassFinder/Prefix.php \xautoload_ClassFinder_Prefix::findFile()
Finds the path to the file where the class is defined.
Parameters
xautoload_InjectedAPI_findFile $api: API object with a suggestFile() method. We are supposed to call $api->suggestFile($file) with all suggestions we can find, until it returns TRUE. Once suggestFile() returns TRUE, we stop and return TRUE as well. The $file will be in the $api object, so we don't need to return it.
string $class: The name of the class, with all namespaces prepended. E.g. Some\Namespace\Some\Class
Return value
TRUE|NULL TRUE, if we found the file for the class. That is, if the $api->suggestFile($file) method returned TRUE one time. NULL, if we have no more suggestions.
Overrides xautoload_ClassFinder_Interface::findFile
1 method overrides xautoload_ClassFinder_Prefix::findFile()
- xautoload_ClassFinder_NamespaceOrPrefix::findFile in lib/
ClassFinder/ NamespaceOrPrefix.php - Finds the path to the file where the class is defined.
File
- lib/
ClassFinder/ Prefix.php, line 223
Class
Code
function findFile($api, $class) {
// First check if the literal class name is registered.
if (!empty($this->classes[$class])) {
foreach ($this->classes[$class] as $filepath => $true) {
if ($api
->suggestFile($filepath)) {
return TRUE;
}
}
}
// The class is not within a namespace.
// Fall back to the prefix-based finder.
$prefix_path_fragment = str_replace('_', DIRECTORY_SEPARATOR, $class) . '.php';
if ('_' === $class[0]) {
$prefix_path_fragment[0] = '_';
}
if ($this->prefixMap
->findFile_map($api, $prefix_path_fragment, '')) {
return TRUE;
}
}