drupal_eval

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/common.inc, строка 1637

Версии
5 – 6
drupal_eval($code)

Исполнить строку кода на PHP.

Это обёртка вокруг PHP-функции eval(). Используется буферизация вывода, чтобы вернуть и возвращённое eval() значение и печатаемый текст. В отличие от оригинальной eval() функция в Drupal требует, чтобы код был заключён в теги <\?php и \?>. Другими словами код интерпретируется как текст обычного PHP-файла.

Использование обёртки drupal_eval() также гарантирует, что исполненный PHP-код не сможет переписать любые переменные в вызываемом коде. Это также отличает данную функцию от оригинальной eval().

Параметры

$code Строка с кодом для исполнения

Возвращаемое значение

Строка содержащая вывод на печать (например результат исполнения print в коде), следом за ней добавляется значение которое может быть возвращено данным скриптом (например результат return).

▾ 2 функции вызывают drupal_eval()

block_list in modules/block/block.module
Возвращает все блоки в заданном регионе для текущего пользователя.
php_filter in modules/php/php.module
Implementation of hook_filter(). Contains a basic PHP evaluator.

Код

<?php
function drupal_eval($code) {
  global $theme_path, $theme_info, $conf;

  // Store current theme path.
  $old_theme_path = $theme_path;

  // Restore theme_path to the theme, as long as drupal_eval() executes,
  // so code evaluted will not see the caller module as the current theme.
  // If theme info is not initialized get the path from theme_default.
  if (!isset($theme_info)) {
    $theme_path = drupal_get_path('theme', $conf['theme_default']);
  }
  else {
    $theme_path = dirname($theme_info->filename);
  }

  ob_start();
  print eval('?>'. $code);
  $output = ob_get_contents();
  ob_end_clean();

  // Recover original theme path.
  $theme_path = $old_theme_path;

  return $output;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему