1,drupal_static
这个函数在includes/bootstrap.inc中被定义,用于持久化和缓存数据 。
它使用的方法是,在函数内部申明两个静态变量,$data用于存储当前数据,$default用于存储上次数据。
static $data = array(), $default = array();
如果使用了参数$reset=true,它将用上次数据重置当前数据。
if ($reset) {
$data[$name] = $default[$name];
}
这个函数的用法,如includes/common.inc:
function drupal_add_library($module, $name, $every_page = NULL) {
$added = &drupal_static(__FUNCTION__, array());
//如果没有被静态缓存
if (!isset($added[$module][$name])) {
if ($library = drupal_get_library($module, $name)) {
$elements['#attached'] = array(
'library' => $library['dependencies'],
'js' => $library['js'],
'css' => $library['css'],
);
//将正确值加入静态缓存
$added[$module][$name] = drupal_process_attached($elements, JS_LIBRARY, TRUE, $every_page);
}
else {
//将错误值加入静态缓存
$added[$module][$name] = FALSE;
}
}
//如果已经被缓存,就直接返
return $added[$module][$name];
}