Попробуйте добавить «global $ name;» перед обеими строками.
Это должно работать, но глобальных функций следует избегать, по крайней мере, вы должны использовать уникальную переменную с префиксом. Что именно вы пытаетесь сделать конкретно?
Лучшим способом было бы объявить некоторые вспомогательные функции и использовать шаблон, который используют многие такие функции в ядре Drupal, например form_set_error . Если вы посмотрите на первую функцию, вы увидите, что вы можете передать ей что-то, что хранится в статической переменной, а затем возвращается. Он может быть вызван без аргумента, тогда он просто возвращает то, что в нем в данный момент сохранено.
Вы можете определить функцию следующим образом:
<?php
function yourmodule_set_name($name = NULL) {
static $stored_name = NULL;
if ($name) {
$stored_name = $name;
}
return $stored_name;
}
yourmodule_set_name('Sam');
// Prints Sam.
echo yourmodule_set_name();
?>
В Drupal 7 есть вспомогательная функция с именем drupal_static , которую вы можете напрямую (ab-) использовать для этого.
<?php
$name = &drupal_static('yourmodule_name');
$name = 'Sam';
// Anyhwere else, prints also Sam.
echo drupal_static('yourmodule_name');
?>