You are here

function _xautoload_register_drupal in X Autoload 7.4

Same name and namespace in other branches
  1. 7.5 xautoload.module \_xautoload_register_drupal()
  2. 7.3 xautoload.module \_xautoload_register_drupal()

Register Drupal-related namespaces and prefixes in the xautoload loader.

1 call to _xautoload_register_drupal()
xautoload.module in ./xautoload.module

File

./xautoload.module, line 143

Code

function _xautoload_register_drupal() {

  // Check that this runs only once.
  static $_first_run = TRUE;
  if (!$_first_run) {
    return;
  }
  $_first_run = FALSE;

  // Register the class loader itself.
  require_once dirname(__FILE__) . '/xautoload.early.lib.inc';
  _xautoload_register();
  $services = xautoload()
    ->getServiceContainer();
  $lazy = variable_get('xautoload_cache_lazy', FALSE);
  $cache_types = variable_get('xautoload_cache_types', array());
  $decorated = $lazy ? $services->proxyFinder : $services->proxyFinder
    ->getFinder();
  if (!empty($cache_types['apc']) && extension_loaded('apc') && function_exists('apc_store')) {
    $cached_loader = ApcClassLoader::create($decorated, $services->cacheManager);
  }
  elseif (!empty($cache_types['wincache']) && extension_loaded('wincache') && function_exists('wincache_ucache_get')) {
    $cached_loader = WinCacheClassLoader::create($decorated, $services->cacheManager);
  }
  elseif (!empty($cache_types['xcache']) && extension_loaded('Xcache') && function_exists('xcache_get')) {
    $cached_loader = XCacheClassLoader::create($decorated, $services->cacheManager);
  }
  if (isset($cached_loader)) {
    if ($lazy) {
      $decorated
        ->onFinderInit(new LoaderSetFinderOperation($cached_loader));
    }
    $cached_loader
      ->register();
    $services->finder
      ->unregister();
  }
  else {

    // No cache is active.
    // Initialize the finder, to fire scheduled operations.
    $services->proxyFinder
      ->getFinder();
  }

  // Register prefixes and namespaces for enabled extensions.
  $operation = new RegisterActiveExtensionsOperation();
  xautoload()->proxyFinder
    ->onFinderInit($operation);
}