drupal_static
- mediamosa-21
&drupal_static($name, $default_value = NULL, $reset = FALSE)
Central static variable storage.
All functions requiring a static variable to persist or cache data within
a single page request are encouraged to use this function unless it is
absolutely certain that the static variable will not need to be reset during
the page request. By centralizing static variable storage through this
function, other functions can rely on a consistent API for resetting any
other function's static variables.
Example:
<?php
function language_list($field = 'language') {
$languages = &drupal_static(__FUNCTION__);
if (!isset($languages)) {
...
}
if (!isset($languages[$field])) {
...
}
return $languages[$field];
}
function locale_translate_overview_screen() {
drupal_static_reset('language_list');
...
}
?>
In a few cases, a function can have certainty that there is no legitimate
use-case for resetting that function's static variable. This is rare,
because when writing a function, it's hard to forecast all the situations in
which it will be used. A guideline is that if a function's static variable
does not depend on any information outside of the function that might change
during a single page request, then it's ok to use the "static" keyword
instead of the drupal_static() function.
Example:
<?php
function actions_do(...) {
static $stack;
$stack++;
if ($stack > variable_get('actions_max_stack', 35)) {
...
return;
}
...
$stack--;
}
?>
In a few cases, a function needs a resettable static variable, but the
function is called many times (100+) during a single page request, so
every microsecond of execution time that can be removed from the function
counts. These functions can use a more cumbersome, but faster variant of
calling drupal_static(). It works by storing the reference returned by
drupal_static() in the calling function's own static variable, thereby
removing the need to call drupal_static() for each iteration of the function.
Conceptually, it replaces:
<?php
$foo = &drupal_static(__FUNCTION__);
?>
with:
<?php
static $foo = &drupal_static(__FUNCTION__);
?>
However, the above line of code does not work, because PHP only allows static
variables to be initializied by literal values, and does not allow static
variables to be assigned to references.
The example below shows the syntax needed to work around both limitations.
For benchmarks and more information, @see http://drupal.org/node/619666.
Example:
<?php
function user_access($string, $account = NULL) {
static $drupal_static_fast;
if (!isset($drupal_static_fast)) {
$drupal_static_fast['perm'] = &drupal_static(__FUNCTION__);
}
$perm = &$drupal_static_fast['perm'];
...
}
?>
See also
drupal_static_reset()
Parameters
$name
Globally unique name for the variable. For a function with only one static,
variable, the function name (e.g. via the PHP magic __FUNCTION__ constant)
is recommended. For a function with multiple static variables add a
distinguishing suffix to the function name for each one.
$default_value
Optional default value.
$reset
TRUE to reset a specific named variable, or all variables if $name is NULL.
Resetting every variable should only be used, for example, for running
unit tests with a clean environment. Should be used only though via
function drupal_static_reset() and the return value should not be used in
this case.
Return value
Returns a variable by reference.
- actions_list in includes/actions.inc
- Discovers all available actions by invoking hook_action_info().
- actions_loop_test_log in modules/simpletest/tests/actions_loop_test.module
- Write a message to the log.
- aggregator_category_load in modules/aggregator/aggregator.module
- Load an aggregator category.
- aggregator_feed_load in modules/aggregator/aggregator.module
- Load an aggregator feed.
- ajax_process_form in includes/ajax.inc
- Add AJAX information about a form element to the page to communicate with JavaScript.
- archiver_get_info in includes/common.inc
- Retrieves a list of all available archivers.
- arg in includes/path.inc
- Return a component of the current Drupal path.
- block_admin_display in modules/block/block.admin.inc
- Menu callback for admin/structure/block.
- block_list in modules/block/block.module
- Return all blocks in the specified region for the current user.
- book_get_books in modules/book/book.module
- Returns an array of all books.
- book_get_flat_menu in modules/book/book.module
- Get the book menu tree for a page, and return it as a linear array.
- book_menu_subtree_data in modules/book/book.module
- Get the data representing a subtree of the book hierarchy.
- coder_upgrade_upgrades in sites/all/modules/coder/coder_upgrade/conversions/coder_upgrade.main.inc
- Implement hook_upgrades().
- conf_path in includes/bootstrap.inc
- Find the appropriate configuration directory.
- drupal_add_css in includes/common.inc
- Adds a cascading stylesheet to the stylesheet queue.
- drupal_add_feed in includes/common.inc
- Add a feed URL for the current page.
- drupal_add_html_head in includes/common.inc
- Add output to the head tag of the HTML page.
- drupal_add_http_header in includes/bootstrap.inc
- Set an HTTP response header for the current page.
- drupal_add_js in includes/common.inc
- Add a JavaScript file, setting or inline code to the page.
- drupal_add_library in includes/common.inc
- Adds multiple JavaScript or CSS files at the same time.
- drupal_add_tabledrag in includes/common.inc
- Assist in adding the tableDrag JavaScript behavior to a themed table.
- drupal_alter in includes/common.inc
- Hands off alterable variables to type-specific *_alter implementations.
- drupal_cache_system_paths in includes/path.inc
- Cache system paths for a page.
- drupal_get_destination in includes/common.inc
- Prepare a 'destination' URL query parameter for use in combination with drupal_goto().
- drupal_get_http_header in includes/bootstrap.inc
- Get the HTTP response headers for the current page.
- drupal_get_library in includes/common.inc
- Retrieves information for a JavaScript/CSS library.
- drupal_get_schema_versions in includes/install.inc
- Returns an array of available schema versions for a module.
- drupal_get_updaters in includes/common.inc
- Drupal Updater registry.
- drupal_html_id in includes/common.inc
- Prepare a string for use as a valid HTML ID and guarantee uniqueness.
- drupal_is_front_page in includes/path.inc
- Check if the current page is the front page.
- drupal_lookup_path in includes/path.inc
- Given an alias, return its Drupal system URL if one exists. Given a Drupal
system URL return one of its aliases if such a one exists. Otherwise,
return FALSE.
- drupal_mail_system in includes/mail.inc
- Returns an object that implements the MailSystemInterface.
- drupal_match_path in includes/path.inc
- Check if a path matches any pattern in a set of patterns.
- drupal_page_header in includes/bootstrap.inc
- Set HTTP headers in preparation for a page response.
- drupal_page_is_cacheable in includes/bootstrap.inc
- Determine the cacheability of the current page.
- drupal_render_page in includes/common.inc
- Renders the page, including all theming.
- drupal_retrieve_form in includes/form.inc
- Retrieves the structured array that defines a given form.
- drupal_save_session in includes/session.inc
- Determine whether to save session data of the current request.
- drupal_send_headers in includes/bootstrap.inc
- Send the HTTP response headers previously set using drupal_add_http_header().
Add default headers, unless they have been replaced or unset using
drupal_add_http_header().
- drupal_set_breadcrumb in includes/common.inc
- Set the breadcrumb trail for the current page.
- drupal_set_page_content in includes/common.inc
- Set the main page content value for later use.
- drupal_set_title in includes/path.inc
- Set the title of the current page, for display on the page and in the title bar.
- drupal_static_reset in includes/bootstrap.inc
- Reset one or all centrally stored static variable(s).
- drupal_validate_form in includes/form.inc
- Validates user-submitted form data from the $form_state using
the validate functions defined in a structured form array.
- element_info in includes/common.inc
- Retrieve the default properties for the defined element type.
- entity_get_controller in includes/common.inc
- Get the entity controller class for an entity type.
- entity_get_info in includes/common.inc
- Get the entity info array of an entity type.
- field_extra_fields in modules/field/field.module
- Registry of pseudo-field components in a given bundle.
- field_multilingual_available_languages in modules/field/field.multilingual.inc
- Collect the available languages for the given entity type and field.
- field_test_entity_info_translatable in modules/field/tests/field_test.module
- Helper function to enable entity translations.
- field_test_memorize in modules/field/tests/field_test.module
- Store and retrieve keyed data for later verification by unit tests.
- field_ui_field_type_options in modules/field_ui/field_ui.admin.inc
- Return an array of field_type options.
- field_ui_formatter_options in modules/field_ui/field_ui.admin.inc
- Return an array of formatter options for a field type.
- field_ui_view_modes_tabs in modules/field_ui/field_ui.module
- Group available view modes on tabs on the 'Manage display' page.
- field_ui_widget_type_options in modules/field_ui/field_ui.admin.inc
- Return an array of widget type options for a field type.
- file_get_file_references in modules/file/file.module
- Get a list of references to a file.
- file_get_stream_wrappers in includes/file.inc
- Drupal stream wrapper registry.
- file_mimetype_mapping in includes/file.mimetypes.inc
- Return an array of MIME extension mappings.
- filter_formats in modules/filter/filter.module
- Retrieve a list of text formats, ordered by weight.
- filter_get_filters in modules/filter/filter.module
- Return a list of all filters provided by modules.
- filter_list_format in modules/filter/filter.module
- Retrieve a list of filters for a given text format.
- fix_gpc_magic in includes/common.inc
- Fix double-escaping problems caused by "magic quotes" in some PHP installations.
- format_date in includes/common.inc
- Format a date with the given configured format or a custom format string.
- form_set_error in includes/form.inc
- Files an error against a form element.
- forum_field_storage_pre_update in modules/forum/forum.module
- Implements hook_field_storage_pre_update().
- forum_get_forums in modules/forum/forum.module
- Returns a list of all forums for a given taxonomy id
- hook_field_storage_pre_update in modules/field/field.api.php
- Act before the storage backends update field data.
- image_effects in modules/image/image.module
- Load all image effects from the database.
- image_effect_definitions in modules/image/image.module
- Pull in image effects exposed by modules implementing hook_image_effect_info().
- image_styles in modules/image/image.module
- Get an array of all styles and their settings.
- install_profile_info in includes/install.inc
- Retrieve info about an install profile from its .info file.
- ip_address in includes/bootstrap.inc
- If Drupal is behind a reverse proxy, we use the X-Forwarded-For header
instead of $_SERVER['REMOTE_ADDR'], which would be the IP address of
the proxy server, and not the client's. The actual header name can be
configured by the...
- language_fallback_get_candidates in includes/language.inc
- Return the possible fallback languages ordered by language weight.
- language_list in includes/bootstrap.inc
- Get a list of languages set up indexed by the specified key
- language_negotiation_info in includes/language.inc
- Return all the defined language providers.
- language_provider_invoke in includes/language.inc
- Helper function used to cache the language providers results.
- language_types_configurable in includes/language.inc
- Return only the configurable language types.
- language_types_info in includes/language.inc
- Return all the defined language types.
- list_allowed_values in modules/field/modules/list/list.module
- Returns the set of allowed values for a list field.
- list_themes in includes/theme.inc
- Return a list of all currently available themes.
- locale in modules/locale/locale.module
- Provides interface translation services.
- locale_get_plural in modules/locale/locale.module
- Returns plural form index for a specific number.
- locale_language_name in modules/locale/locale.module
- Returns a language name
- map_month in includes/form.inc
- Helper function for usage with drupal_map_assoc to display month names.
- menu_cache_clear in includes/menu.inc
- Clears the cached cached data for a single named menu.
- menu_contextual_links in includes/menu.inc
- Retrieve contextual links for a system object based on registered local tasks.
- menu_get_custom_theme in includes/menu.inc
- Gets the custom theme for the current page, if there is one.
- menu_get_item in includes/menu.inc
- Get a router item.
- menu_get_names in includes/menu.inc
- Build a list of named menus.
- menu_load_all in modules/menu/menu.module
- Load all custom menu data.
- menu_local_tasks in includes/menu.inc
- Collects the local tasks (tabs), action links, and the root path.
- menu_set_active_menu_names in includes/menu.inc
- Set (or get) the active menu for the current page - determines the active trail.
- menu_set_active_trail in includes/menu.inc
- Sets or gets the active trail (path to root menu root) of the current page.
- menu_tree in includes/menu.inc
- Render a menu tree based on the current path.
- menu_tree_all_data in includes/menu.inc
- Get the data structure representing a named menu tree.
- menu_tree_page_data in includes/menu.inc
- Get the data structure representing a named menu tree, based on the current page.
- module_hook_info in includes/module.inc
- Retrieve a list of what hooks are explicitly declared.
- module_implements in includes/module.inc
- Determine which modules are implementing a hook.
- module_implements_write_cache in includes/module.inc
- Writes the hook implementation cache.
- node_access in modules/node/node.module
- Determine whether the current user may perform the given operation on the
specified node.
- node_access_view_all_nodes in modules/node/node.module
- Determine whether the user has a global viewing grant for all nodes.
- node_last_viewed in modules/node/node.module
- Retrieves the timestamp at which the current user last viewed the
specified node.
- node_mark in modules/node/node.module
- Decide on the type of marker to be displayed for a given node.
- node_type_set_defaults in modules/node/node.module
- Set the default values for a node type.
- overlay_form_submit in modules/overlay/overlay.module
- Generic form submit handler.
- overlay_render_region in modules/overlay/overlay.module
- Renders an individual page region.
- overlay_request_dialog_close in modules/overlay/overlay.module
- Callback to request that the overlay close on the next page load.
- overlay_set_mode in modules/overlay/overlay.module
- Set overlay mode and add proper JavaScript and styles to the page.
- overlay_set_regions_to_render in modules/overlay/overlay.module
- Sets the regions of the page that rendering will be limited to.
- overlay_store_rendered_content in modules/overlay/overlay.module
- Stores strings representing rendered HTML content.
- pager_get_query_parameters in includes/pager.inc
- Compose a URL query parameter array for pager links.
- path_get_admin_paths in includes/path.inc
- Get a list of administrative and non-administrative paths.
- path_is_admin in includes/path.inc
- Determine whether a path is in the administrative section of the site.
- search_dirty in modules/search/search.module
- Marks a word as dirty (or retrieves the list of dirty words). This is used
during indexing (cron). Words which are dirty have outdated total counts in
the search_total table, and need to be recounted.
- search_get_info in modules/search/search.module
- Get information about all available search hooks.
- search_get_keys in modules/search/search.module
- Helper function for grabbing search keys.
- search_index_split in modules/search/search.module
- Splits a string into tokens for indexing.
- shortcut_current_displayed_set in modules/shortcut/shortcut.module
- Returns the current displayed shortcut set for the provided user account.
- simpletest_test_get_all in modules/simpletest/simpletest.module
- Get a list of all of the tests provided by the system.
- syslog_watchdog in modules/syslog/syslog.module
- Implements hook_watchdog().
- system_admin_menu_block in modules/system/system.module
- Provide a single block on the administration overview page.
- system_date_format_locale in modules/system/system.module
- Get the appropriate date format for a type and locale.
- system_get_date_formats in modules/system/system.module
- Get the list of date formats for a particular format length.
- system_get_date_types in modules/system/system.module
- Get the list of available date types and attributes.
- system_get_module_admin_tasks in modules/system/system.module
- Generate a list of tasks offered by a specified module.
- system_list in includes/module.inc
- Build a list of bootstrap modules and enabled modules and themes.
- system_region_list in modules/system/system.module
- Get a list of available regions from a specified theme.
- system_test_page_build in modules/simpletest/tests/system_test.module
- Implements hook_page_build().
- taxonomy_field_update in modules/taxonomy/taxonomy.module
- Implements hook_field_update().
- taxonomy_get_children in modules/taxonomy/taxonomy.module
- Find all children of a term ID.
- taxonomy_get_parents in modules/taxonomy/taxonomy.module
- Find all parents of a given term ID.
- taxonomy_get_parents_all in modules/taxonomy/taxonomy.module
- Find all ancestors of a given term ID.
- taxonomy_get_tree in modules/taxonomy/taxonomy.module
- Create a hierarchical representation of a vocabulary.
- template_preprocess in includes/theme.inc
- Adds a default set of helper variables for variable processors and templates.
This comes in before any other preprocess function which makes it possible to
be used in default theme implementations (non-overridden theme functions).
- template_preprocess_block in modules/block/block.module
- Process variables for block.tpl.php
- theme_comment_post_forbidden in modules/comment/comment.module
- Theme a "you can't post comments" notice.
- theme_get_setting in includes/theme.inc
- Retrieve a setting for the current theme or for a given theme.
- token_info in includes/token.inc
- Returns metadata describing supported tokens.
- toolbar_in_active_trail in modules/toolbar/toolbar.module
- Checks whether an item is in the active trail.
- translation_node_get_translations in modules/translation/translation.module
- Get all nodes in a translation set, represented by $tnid.
- update_get_projects in modules/update/update.compare.inc
- Fetch an array of installed and enabled projects.
- url in includes/common.inc
- Generate a URL.
- user_access in modules/user/user.module
- Determine whether the user has a given privilege.
- user_role_permissions in modules/user/user.module
- Determine the permissions for one or more roles.
- _block_compare in modules/block/block.admin.inc
- Helper function for sorting blocks on admin/structure/block.
- _drupal_bootstrap_full in includes/common.inc
- _drupal_build_css_path in includes/common.inc
- Helper function for drupal_build_css_cache().
- _form_options_flatten in includes/form.inc
- _forum_user_last_visit in modules/forum/forum.module
- _locale_import_one_string in includes/locale.inc
- Imports a string into the database
- _locale_translate_seek_query in includes/locale.inc
- Build array out of search criteria specified in request variables
- _lock_id in includes/lock.inc
- Helper function to get this request's unique id.
- _menu_clear_page_cache in includes/menu.inc
- Helper function to clear the page and block caches at most twice per page load.
- _menu_overview_tree_form in modules/menu/menu.admin.inc
- Recursive helper function for menu_overview_form().
- _menu_router_cache in includes/menu.inc
- Helper function to store the menu router if we have it in memory.
- _node_revision_access in modules/node/node.module
- _node_types_build in modules/node/node.module
- Builds and returns the list of available node types.
- _openid_dh_rand in modules/openid/openid.inc
- _openid_get_bytes in modules/openid/openid.inc
- _rdf_get_default_mapping in modules/rdf/rdf.module
- Returns the default RDF mapping for a given entity type.
- _system_rebuild_theme_data in modules/system/system.module
- Helper function to scan and collect theme .info data and their engines.
- _trigger_get_all_info in modules/trigger/trigger.module
- Retrieves and caches information from hook_trigger_info() implementations.
- _update_create_fetch_task in modules/update/update.fetch.inc
- Add a task to the queue for fetching release history data for a project.
- _update_manager_extract_directory in modules/update/update.manager.inc
- Return the directory where update archive files should be extracted.
- _update_process_fetch_task in modules/update/update.fetch.inc
- Process a task to fetch available update data for a single project.
Code
includes/bootstrap.inc, line 2582
<?php
function &drupal_static($name, $default_value = NULL, $reset = FALSE) {
static $data = array(), $default = array();
if (!isset($name)) {
foreach ($default as $name => $value) {
$data[$name] = $value;
}
return $data;
}
if ($reset) {
if (array_key_exists($name, $default)) {
$data[$name] = $default[$name];
}
else {
return $data;
}
}
elseif (!array_key_exists($name, $data)) {
$default[$name] = $data[$name] = $default_value;
}
return $data[$name];
}
?>