আপনি যে ফাংশনটি ব্যবহার করতে পারবেন তা হ'ল ইউজার_উইড_অপশনাল_লোড () ; তর্ক ছাড়াই, এটি বর্তমানে লগ-ইন করা ব্যবহারকারীর জন্য ব্যবহারকারীর বস্তুটি প্রদান করে। এটি এখনও গ্লোবাল ব্যবহার করে $user
এবং ব্যবহারকারীর সাথে সম্পর্কিত ক্ষেত্রগুলি সহ ডাটাবেস থেকে সম্পূর্ণ বস্তুটি লোড করে, তবে এটি আপনার কোডটি ঘটনাক্রমে গ্লোবাল ভেরিয়েবলের সামগ্রী পরিবর্তন করতে এড়ায় $user
, কারণ এটি আপনার কোড থেকে উল্লেখ করা হয়নি।
function user_uid_optional_load($uid = NULL) {
if (!isset($uid)) {
$uid = $GLOBALS['user']->uid;
}
return user_load($uid);
}
যদি আপনার সম্পূর্ণ অবজেক্টের প্রয়োজন না হয় তবে আপনি ইতিমধ্যে অন্য উত্তরে রিপোর্ট করা কোডটি ব্যবহার করতে পারেন। আপনি যদি নিশ্চিত হতে চান যে আপনি বিশ্বব্যাপী বস্তুটি পরিবর্তন করেন না, আপনি নীচের স্নিপেটের মতো গ্লোবাল ভেরিয়েবলকে স্থানীয় ভেরিয়েবলে অনুলিপি করতে পারেন।
$account = $GLOBALS['user'];
// Use $account.
ড্রুপাল 8-এ, আপনি \Drupal::currentUser()
দ্রুপাল 7 এর সমতুল্য হওয়ার জন্য $GLOBALS['user']
এবং এর \Drupal\user\Entity\User::load(\Drupal::currentUser()->id())
সমস্ত ক্ষেত্রের এপিআই ক্ষেত্রগুলির সাথে একটি সম্পূর্ণ লোডযুক্ত বস্তুটি পেতে স্থিতিশীল পদ্ধতিটি ব্যবহার করেন । সমস্ত ফলাফলের সাথে বৈশ্বিক পরিবর্তনশীলকে ওভাররাইড করার ঝুঁকি আর নেই।
ক্ষেত্রে আপনার বর্তমান ব্যবহারকারীর সাথে স্যুইচ করা দরকার, উদাহরণস্বরূপ, বেনামে ব্যবহারকারীর, আপনি ড্রুপাল 8 এ যে কোডটি ব্যবহার করেন তা নিম্নলিখিতটি।
$accountSwitcher = Drupal::service('account_switcher');
$accountSwitcher->switchTo(new Drupal\Core\Session\AnonymousUserSession());
// Your code here.
// Eventually, restore the user account.
$accountSwitcher->switchBack();