function _xautoload_register_drupal in X Autoload 7.5
Same name and namespace in other branches
- 7.3 xautoload.module \_xautoload_register_drupal()
- 7.4 xautoload.module \_xautoload_register_drupal()
Registers Drupal-related namespaces and prefixes in the xautoload loader, and activates the APC (or similar) cache, if enabled.
1 call to _xautoload_register_drupal()
File
- ./
xautoload.module, line 128
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 __DIR__ . '/xautoload.early.lib.inc';
_xautoload_register();
$services = xautoload()
->getServiceContainer();
if ($services->system
->variableGet(XAUTOLOAD_VARNAME_REPLACE_CORE)) {
/**
* Completely take over.
*
* @see _drupal_bootstrap_database()
* @see drupal_autoload_class()
* @see drupal_autoload_interface()
*/
spl_autoload_unregister('drupal_autoload_class');
spl_autoload_unregister('drupal_autoload_interface');
}
$lazy = $services->system
->variableGet(XAUTOLOAD_VARNAME_CACHE_LAZY, FALSE);
$decorated = $lazy ? $services->proxyFinder : $services->proxyFinder
->getFinder();
// Activate a cache, if available and enabled.
$cache_types = $services->system
->variableGet(XAUTOLOAD_VARNAME_CACHE_TYPES, array());
if (!empty($cache_types['apcu_q']) && extension_loaded('apcu') && function_exists('apcu_store')) {
$cached_loader = ApcuQueuedCachedClassLoader::create($decorated, $services->cacheManager);
}
elseif (!empty($cache_types['apc']) && extension_loaded('apc') && function_exists('apc_store')) {
$cached_loader = ApcClassLoader::create($decorated, $services->cacheManager);
}
elseif (!empty($cache_types['apcu']) && extension_loaded('apcu') && function_exists('apcu_store')) {
$cached_loader = ApcuClassLoader::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);
}
elseif (!empty($cache_types['dbcache'])) {
$cached_loader = DbCacheClassLoader::create($decorated, $services->cacheManager);
}
if (isset($cached_loader)) {
if ($lazy) {
$decorated
->observeFirstCacheMiss(new CacheMissLoaderSetFinder($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.
$services->proxyFinder
->observeFirstCacheMiss($services->phaseControl);
}