You are here

function autoload_get_lookup in Autoload 6

Same name and namespace in other branches
  1. 6.2 autoload.module \autoload_get_lookup()

Build and return the lookup table for classes and interfaces.

Return value

The lookup table for what classes are stored where.

2 calls to autoload_get_lookup()
autoload_class in ./autoload.module
Autoload function for registered classes.
autoload_flush_caches in ./autoload.module
Implementation of hook_flush_caches().

File

./autoload.module, line 39

Code

function autoload_get_lookup($reset = FALSE) {
  static $lookup;
  if (isset($lookup) && !$reset) {
    return $lookup;
  }
  if (!$reset && ($cache = cache_get('autoload:')) && isset($cache->data)) {
    $lookup = $cache->data;
  }
  else {

    // We need to manually call each module so that we can know which module
    // a given item came from.
    $classes = array();
    foreach (module_implements('autoload_info') as $module) {
      $class_items = call_user_func($module . '_autoload_info');
      if (isset($class_items) && is_array($class_items)) {
        foreach (array_keys($class_items) as $item) {
          $class_items[$item]['module'] = $module;
        }
        $classes = array_merge($classes, $class_items);
      }
    }

    // Alter the lookup table as defined by modules. The keys are class and interface names.
    drupal_alter('autoload_info', $classes);

    // Derive the full path name and store just the lookup table itself.
    $lookup = array();
    foreach ($classes as $class => $item) {
      $file_path = isset($item['file path']) ? $item['file path'] : drupal_get_path('module', $item['module']);
      $lookup[$class] = $file_path . '/' . $item['file'];
    }

    // Save the lookup table, then return it.
    cache_set('autoload:', $lookup);
  }
  return $lookup;
}