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).
Код
<?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;
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии