_registry_check_code
function _registry_check_code
_registry_check_code($type, $name = NULL)
Checks for a resource in the registry.
Parameters
$type: The type of resource we are looking up, or one of the constants REGISTRY_RESET_LOOKUP_CACHE or REGISTRY_WRITE_LOOKUP_CACHE, which signal that we should reset or write the cache, respectively.
$name: The name of the resource, or NULL if either of the REGISTRY_* constants is passed in.
Return value
TRUE if the resource was found, FALSE if not. NULL if either of the REGISTRY_* constants is passed in as $type.
Related topics
File
- includes/bootstrap.inc, line 3418
- Functions that need to be loaded on every Drupal request.
Code
function _registry_check_code($type, $name = NULL) { static $lookup_cache, $cache_update_needed; if ($type == 'class' && class_exists($name) || $type == 'interface' && interface_exists($name) || $type == 'trait' && trait_exists($name)) { return TRUE; } if (!isset($lookup_cache)) { $lookup_cache = array(); if ($cache = cache_get('lookup_cache', 'cache_bootstrap')) { $lookup_cache = $cache->data; } } // When we rebuild the registry, we need to reset this cache so // we don't keep lookups for resources that changed during the rebuild. if ($type == REGISTRY_RESET_LOOKUP_CACHE) { $cache_update_needed = TRUE; $lookup_cache = NULL; return; } // Called from drupal_page_footer, we write to permanent storage if there // changes to the lookup cache for this request. if ($type == REGISTRY_WRITE_LOOKUP_CACHE) { if ($cache_update_needed) { cache_set('lookup_cache', $lookup_cache, 'cache_bootstrap'); } return; } // $type is either 'interface' or 'class', so we only need the first letter to // keep the cache key unique. $cache_key = $type[0] . $name; if (isset($lookup_cache[$cache_key])) { if ($lookup_cache[$cache_key]) { include_once DRUPAL_ROOT . '/' . $lookup_cache[$cache_key]; } return (bool) $lookup_cache[$cache_key]; } // This function may get called when the default database is not active, but // there is no reason we'd ever want to not use the default database for // this query. $file = Database::getConnection('default', 'default') ->select('registry', 'r', array('target' => 'default')) ->fields('r', array('filename')) // Use LIKE here to make the query case-insensitive. ->condition('r.name', db_like($name), 'LIKE') ->condition('r.type', $type) ->execute() ->fetchField(); // Flag that we've run a lookup query and need to update the cache. $cache_update_needed = TRUE; // Misses are valuable information worth caching, so cache even if // $file is FALSE. $lookup_cache[$cache_key] = $file; if ($file) { include_once DRUPAL_ROOT . '/' . $file; return TRUE; } else { return FALSE; } }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/includes!bootstrap.inc/function/_registry_check_code/7.x