我想设置一个全局变量,Drupal项目中的任何模块都可以看到并获取其值。这是我的代码:
-
我的模块1:
function setGlobalDocId($params){ $global_selected_DocId = &drupal_static(__FUNCTION__); $global_selected_DocId=$params; }
-
我的模块2:
$selectedId=&drupal_static('setGlobalDocId'); echo (" selectedId = ".$selectedId);
我确信模块1中的setGlobalDocId()
是在调用模块2中的全局变量之前执行的。我错过什么了吗?我什么都没有。
在您的代码示例中,您正在setGlobalDocId
中创建$global_selected_DocId
作为全局变量。但是在您的module 2
中,您不是请求全局$global_selected_DocId
,而是请求一个名为setGlobalDocId
的变量,该变量在您的案例中不存在。
要解决此问题,您应该在module 2
中使用与module 1
中相同的代码结构。
$global_selected_DocId = &drupal_static(__FUNCTION__, null);
if ($global_selected_DocId === null) {
//global_selected_DocId is not set, do a fallback or someting else to capture exception
}
//global_selected_DocId should contain value set through setGlobalDocId in module 1