Drupal 7 глобальная переменная $ user - PullRequest
3 голосов
/ 16 марта 2012

Буду признателен, если кто-нибудь подскажет, как мы можем установить переменную global $user, чтобы нам не приходилось повторно объявлять ее в каждой функции, чтобы получить доступ к ее содержимому.Как мы можем объявить это так, чтобы все функции в модуле могли использовать это?

Ответы [ 3 ]

5 голосов
/ 16 марта 2012

Тип глобала, который вы ищете (доступен всегда, в любой области), называется суперглобальным в PHP.Вы не можете объявить новые суперглобалы, но вы можете получить доступ ко всем глобалам напрямую, потому что они являются частью суперглобала $GLOBAL.Другими словами, вы можете использовать $GLOBALS['user'] для прямого доступа к глобальному $ user.

См. Также Создание суперглобальных переменных в php? для получения дополнительной информации и альтернативных методов.

3 голосов
/ 16 марта 2012

Вы не можете ... так работают глобалы в PHP.Если вы хотите импортировать глобальную переменную в вашу локальную функцию, тогда вам нужно использовать ключевое слово global, его никак не обойти.Это «особенность» языка PHP, он не имеет ничего общего с Drupal.

Альтернативным методом может быть реализация вспомогательной функции:

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

И вызывать ее следующим образом:

$user = &get_current_user();
1 голос
/ 17 августа 2013

В вашей функции, если вы хотите использовать переменную $ user, вам просто нужно использовать / instantiate ключевое слово 'global' перед тем, как $ user его.Таким образом, вы можете получить доступ ко всем данным для текущего пользователя веб-сайта.

Например,

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

Обратите внимание, что вы не можете повторно объявить их.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...