1.20.x bootstrap.inc | backdrop_autoload($class) |
Confirms that a class is available.
This function is rarely called directly. Instead, it is registered as an spl_autoload_function() handler, and PHP calls it for us when necessary.
Parameters
$class: The name of the class to check or load.
Return value
TRUE if the class is currently available, FALSE otherwise.:
File
- includes/
bootstrap.inc, line 4263 - Functions that need to be loaded on every Backdrop request.
Code
function backdrop_autoload($class) {
$class_registry = &backdrop_static(__FUNCTION__, NULL);
if (!isset($class_registry)) {
include_once BACKDROP_ROOT . '/core/includes/bootstrap.classes.inc';
include_once BACKDROP_ROOT . '/core/includes/module.inc';
$class_registry = backdrop_class_list();
// Loop through all modules to build the list of classes. We avoid
// module_invoke_all() because it uses array_merge_recursive(), which is an
// expensive O(n^2) operation. Instead we use module_implements() and merge
// the array manually, which is O(n).
include_once BACKDROP_ROOT . '/core/includes/module.inc';
foreach (module_implements('autoload_info') as $module) {
$module_classes = module_invoke($module, 'autoload_info');
$module_path = backdrop_get_path('module', $module);
foreach ($module_classes as $module_class => $relative_path) {
$class_registry[$module_class] = BACKDROP_ROOT . '/' . $module_path . '/' . $relative_path;
}
}
// Load class registries for the backends.
$class_registry += silkscreen_find_backends('database');
$class_registry += silkscreen_find_backends('cache');
$class_registry += silkscreen_find_backends('config');
backdrop_alter('autoload_info', $class_registry);
}
if (isset($class_registry[$class])) {
require_once $class_registry[$class];
return TRUE;
}
else {
return FALSE;
}
}