drupal_static () использует переменную FUNCTION, что это значит?

function drupal_set_page_content($content = NULL) {
     $content_block = &drupal_static(__FUNCTION__, NULL);
     $main_content_display = &drupal_static('system_main_content_added', FALSE);

 if (!empty($content)) {
   $content_block = (is_array($content) ? $content : array('main' => array('#markup' => $content)));
 }
 else {
   $main_content_display = TRUE;
   return $content_block;
  }
}

Этот фрагмент вставлен из common.inc. Мы передаем __FUNCTION__ html = ) , но я не знаю, что означает эта переменная. Означает ли это кеш для самой внешней функции? Как это работает? Я не вижу никаких данных, обрабатываемых внутри функции, прежде чем он вернет drupal_static().

21 голос | спросил Drupal cai 20 PMpFri, 20 Apr 2012 18:01:21 +040001Friday 2012, 18:01:21

2 ответа


33

__FUNCTION__ является одним из так называемых Магических констант PHP.

Все, что он делает, это вернуть строку с именем функции, в которой содержится константа.

Например:

function my_strangely_named_function() {
  print __FUNCTION__;
}

Вышеприведённый текст напечатает 'my_strangely_named_function'.

Drupal использует эту константу с ее статическим кешем, так что каждый кеш идентифицируется из любой другой функции и, как таковой, может быть определенно очищен.

Чтобы использовать сокращенную версию вашего кода:

function drupal_set_page_content($content = NULL) {
  $content_block = &drupal_static(__FUNCTION__, NULL);
}

Любая другая функция в жизненном цикле Drupal может вызвать:

drupal_static_reset('drupal_set_page_content');

И это очистит кеш для этой конкретной функции, так что в следующий раз, когда он называется данными, создается как будто из нового.

Это просто базовое использование шаблона статического кеша, вы можете найти дополнительную информацию и примеры на для самой страницы drupal_static() .

ответил Clive 20 PMpFri, 20 Apr 2012 18:24:32 +040024Friday 2012, 18:24:32
3

В подробной информации вы получите http: //блоги. sourceallies.com/2012/02/static-caching-in-drupal/. Вот цитата из него:

  

... кэширование (любого типа, а не просто статическое кэширование) должно выполняться ответственным образом. Чрезмерное использование кэширующей паводковой памяти, которая может привести к сбою сайтов с высоким трафиком. Помните также, что кеширование должно использоваться для больших структур данных, которые очень дороги для генерации. Наконец, используйте кеширование, только если вы точно знаете, что то, что вам понадобится, будет необходимо снова (например, данные меню в Drupal). Нет смысла кэшировать список имен или адресов или цветов, если этот список больше никогда не будет использоваться. Это будет похоже на сохранение старых шин для автомобилей после того, как вы поместите новые.

ответил Suresh Kumara 15 Mayam15 2015, 10:29:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132