跨模块使用drupal_static var



我想设置一个全局变量,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

相关内容

  • 没有找到相关文章

最新更新