Поблагодарили бы, если кто-нибудь может сообщить мне, как мы можем установить переменную global $user
, так что нам не нужно повторно декларировать ее в каждой функции, чтобы получить доступ к ее содержимому. Как мы можем объявить его так, чтобы все функции в модуле могли его использовать?
ответ
Тип глобального вы ищете (доступны всегда, в каждом scope) в PHP называется superglobal. Вы не можете объявлять новые суперглобалы, но вы можете получить доступ ко всем глобальным группам напрямую, потому что они являются частью суперглобального $GLOBAL
. Другими словами, вы можете использовать $GLOBALS['user']
для прямого доступа к $ user global.
См. Также create superglobal variables in php? для получения дополнительной информации и альтернативных методов.
Вы не можете ... вот как работают глобальные переменные в PHP. Если вы хотите импортировать глобальную переменную в свою локальную функцию, вам нужно использовать ключевое слово global
, ее нет. Это «особенность» языка PHP, это не имеет никакого отношения к Drupal.
Альтернативный метод может быть реализовать вспомогательную функцию:
function get_current_user() {
global $user;
return $user;
}
И называть это так:
$user = &get_current_user();
В вашей функции, если вы хотите использовать переменную $ user, вам просто нужно использовать/создавать экземпляр «global» до $ user it. Чтобы вы могли получить доступ ко всем данным для этого текущего пользователя веб-сайта.
Например
function myGenericFunc(){
global $user;
$user_id = $user->uid;
}
Заметим, что вы не можете переопределить его.
Надеюсь, это поможет.
+1 забыл о '$ GLOBALS' :) – Clive
Большое спасибо. Итак, теперь я могу просто делать $ GLOBALS ['user'] -> uid каждый раз, когда мне нужно получить идентификатор пользователя текущего пользователя. –