2012-03-16 43 views
3

如果有人能告诉我们如何设置global $user变量,我们不必在每个函数中重新声明它,以便访问它的内容。我们如何声明它以便模块中的所有功能都可以使用它?

回答

4

的全球您一直在寻找(可用的,在每一个类型范围)在PHP中被称为superglobal。你不能声明新的超全局变量,但你可以直接访问所有的全局变量,因为它们是超全球的$GLOBAL的一部分。换句话说,您可以使用$GLOBALS['user']直接访问$ user全局。

另请参阅create superglobal variables in php?欲了解更多信息及替代方法。

+0

+1忘了'$ GLOBALS' :) – Clive 2012-03-16 13:07:02

+0

非常感谢。所以现在,我每次需要获取当前用户的用户名时,只需执行$ GLOBALS ['user'] - > uid。 – 2012-03-19 05:53:22

3

你不能......这就是全局变量在PHP中的工作原理。如果您想将全局变量导入到您的本地函数中,那么您必须使用关键字global,否则无法绕过它。这是PHP语言的一个'功能',它与Drupal无关。

的另一种方法可能是实现一个辅助功能:

function get_current_user() { 
    global $user; 
    return $user; 
} 

,并调用它是这样的:

$user = &get_current_user(); 
1

在你的函数中,如果你想使用$ user变量,你只需要在$ user之前使用/实例化'global'关键字。这样您就可以访问该网站当前用户的所有数据。

例如

function myGenericFunc(){ 
     global $user; 
     $user_id = $user->uid; 
    } 

请注意,您不能重新声明它。

我希望它有帮助。