Kullanabileceğiniz işlev user_uid_optional_load () ; bağımsız değişkenler olmadan, oturum açmış olan kullanıcı için kullanıcı nesnesini döndürür. Yine de global kullanır $user
ve tüm nesneyi kullanıcılarla ilişkili alanlar da dahil olmak üzere veritabanından yükler, ancak kodunuzdan kaynaklanmadığından, kodunuzun genel değişkenin içeriğini yanlışlıkla değiştirmesini önler $user
.
function user_uid_optional_load($uid = NULL) {
if (!isset($uid)) {
$uid = $GLOBALS['user']->uid;
}
return user_load($uid);
}
Eğer tam nesneye ihtiyacınız yoksa, diğer cevaplarda daha önce bildirilmiş olan kodu kullanabilirsiniz. Genel nesneyi değiştirmediğinizden emin olmak istiyorsanız, genel değişkeni aşağıdaki snippet'te olduğu gibi yerel bir değişkene kopyalayabilirsiniz.
$account = $GLOBALS['user'];
// Use $account.
Drupal 8'de, \Drupal::currentUser()
Drupal 7'nin eşdeğerini elde etmek $GLOBALS['user']
ve \Drupal\user\Entity\User::load(\Drupal::currentUser()->id())
tüm alan API alanları ile tam olarak yüklenmiş bir nesne elde etmek için statik yöntemi kullanmanız yeterlidir . Artık tüm sonuçları içeren küresel bir değişkeni geçersiz kılma riski yoktur.
Geçerli kullanıcıyı, örneğin isimsiz bir kullanıcıyla değiştirmeniz gerekirse, Drupal 8'de kullandığınız kod aşağıdaki gibidir.
$accountSwitcher = Drupal::service('account_switcher');
$accountSwitcher->switchTo(new Drupal\Core\Session\AnonymousUserSession());
// Your code here.
// Eventually, restore the user account.
$accountSwitcher->switchBack();